我刚刚开始研究一个新的 C++/Qt 项目。这将是一个基于 MDI 的 IDE,带有用于文件树、对象浏览器、编译器输出等内容的停靠小部件。但到目前为止,有一件事困扰着我:我不知道如何以编程方式使一个QDockWidget
更小。例如,这个片段创建了我的底部停靠窗口,“构建信息”:
m_compilerOutput = new QTextEdit;
m_compilerOutput->setReadOnly(true);
dock = new QDockWidget(tr("Build Information"), this);
dock->setWidget(m_compilerOutput);
addDockWidget(Qt::BottomDockWidgetArea, dock);
启动时,我的程序如下所示(记住开发的早期阶段):
但是,我希望它看起来像这样:
我似乎无法让这件事发生。QDockWidget 上的 Qt 参考是这样说的:
应在子小部件中实施自定义尺寸提示、最小和最大尺寸以及尺寸策略。QDockWidget 将尊重它们,调整自己的约束以包括框架和标题。不应在 QDockWidget 本身上设置大小约束,因为它们会根据它是否停靠而改变
现在,这表明进行此操作的一种方法是子类化QTextEdit
并覆盖该sizeHint()
方法。但是,我不想仅仅为了这个目的而这样做,我也没有尝试过它来找到一个可行的解决方案。
我已经尝试调用dock->resize(m_compilerOutput->width(), m_compilerOutput->minimumHeight())
,调用m_compilerOutput->setSizePolicy()
它的每个选项......到目前为止没有任何影响大小。就像我说的那样,我更喜欢用几行代码提供一个简单的解决方案,而不是必须创建一个子类来更改sizeHint()
. 所有建议表示赞赏。