【发布时间】:2018-12-05 23:47:12
【问题描述】:
我有以下 Qt5.11.0 代码来创建一个 qdockwidget。小部件的本质是允许用户在dockwidget 浮动时根据需要通过鼠标交互式地调整小部件的大小(下面的示例是人为设计的,但我相信可以说明问题)。
当我运行它并将dockwidget 浮动到它自己的顶级窗口中时,通过用户交互来调整dockwidget 的大小要么非常困难(Linux),要么不可能(OSX)。在 RHEL Linux 7.6 上,将鼠标悬停在浮动 Dockwidget 的右下角会产生一个“调整大小”光标,但是这种行为的热点最多只有一两个像素宽,这使得用户很难和令人沮丧调整浮动码头小部件的大小。在 OSX 10.13.6 上,我看不到任何通过鼠标交互来调整 dockwidget 大小的选项。
示例代码如下:
#include <QApplication>
#include <QMainWindow>
#include <QDockWidget>
#include <QTextEdit>
#include <QTextStream>
#include <QFile>
#include <QSizeGrip>
int
main( int argc, char *argv[] ) {
QApplication app( argc, argv );
QMainWindow* mw = new QMainWindow();
mw->setCentralWidget( new QWidget() );
QDockWidget* dockWidget = new QDockWidget( "Code viewer", mw );
mw->addDockWidget( Qt::LeftDockWidgetArea, dockWidget );
QTextEdit* textEdit = new QTextEdit( dockWidget );
dockWidget->setWidget( textEdit );
QFile file( "/etc/protocols" );
QString filler;
if( ! file.open( QIODevice::ReadOnly ) ) {
exit( -1 );
} else {
QTextStream in( &file );
while( ! in.atEnd() ) {
filler += in.readLine();
}
file.close();
}
textEdit->setText( filler );
mw->show();
return app.exec();
}
我已经尝试过 QSizeGrip() 并在网上搜索过,但到目前为止无济于事。
如何在 Linux 上使用 Qt 控制鼠标驱动的浮动码头小部件调整大小的热区大小,以及如何在 OSX 上使用 Qt 首先启用此功能?
【问题讨论】: