У меня есть следующий код Qt5.11.0 для создания qdockwidget.Природа виджета такова, что имеет смысл позволить пользователю изменять размер виджета в интерактивном режиме с помощью мыши по желанию, когда плавающий виджет (пример ниже придуман, но я считаю, иллюстрирует проблему).
Когда я запускаю это и перемещаю dockwidget в свое собственное окно верхнего уровня, оказывается, что очень трудно (Linux) или невозможно (OSX) изменить размер dockwidget через взаимодействие с пользователем.В RHEL Linux 7.6 при наведении курсора мыши на правый нижний угол плавающего виджета создается курсор «изменения размера», однако горячая точка такого поведения в лучшем случае имеет ширину в один или два пикселя, что делает его очень трудным и разочаровывающим для пользователей.изменить размер плавающих док-виджетов.На 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 () и искал по всей сети, но пока безрезультатно.
Как мне управлять размером горячей зоны для изменяемого размера плавающего виджета, управляемого мышью, с помощью Qt в Linux, и как мне включить его в первую очередь с Qt в OSX?