3

我是 Qt 的新手,我正在尝试创建一个停靠在窗口右侧的 DockWidget。我为扩展坞设置了最大和最小宽度(您将在下面的代码中看到)。如果停靠小部件添加了 ,则此方法有效Qt::LeftDockWidgetArea,但是当添加 时Qt::RightDockWidgetArea,停靠“填充”到窗口的中心,如下所示: 红色区域显示停靠小部件边界。

我可能没有以正确的方式调整扩展坞的大小。这是此窗口的代码:

int main(int argv, char** args)
{
    QApplication app(argv, args);
    QMainWindow window;
    QDesktopWidget* desktop = QApplication::desktop();
    //Docks
    QDockWidget* propertyDock = new QDockWidget("",&window);
    QWidget* propertyDockContents = new QWidget;

    //This sets the window in the center of the screen.
    int wWidth = 800; int wHeight = 600;
    window.setGeometry(QRect( (desktop->width()-wWidth)/2 , (desktop->height()-wHeight)/2 ,wWidth,wHeight));

    propertyDock->setAllowedAreas(Qt::RightDockWidgetArea);
    propertyDockContents->setMaximumWidth(200);
    propertyDockContents->setMinimumWidth(20);

    propertyDock->setWidget(propertyDockContents);
    window.addDockWidget(Qt::RightDockWidgetArea,propertyDock);

    window.show();

    return app.exec();
}

有没有“正确”的方法来做到这一点?

4

2 回答 2

3

如文档中所述:

注意:不支持创建没有中央小部件的主窗口。即使它只是一个占位符,您也必须有一个中央小部件。

于 2012-04-09T02:31:52.080 回答
0

是的!您无法创建没有中央小部件的主窗口,但您可以将中央小部件的高度设置为零。 主窗口.cpp

centralWidget()->setMaximumHeight(0);   
于 2018-08-23T03:28:19.307 回答