调整QDockWidget的大小
resize a QDockWidget
我有一个包含几个QDockWidget
的QMainWindow
。一次只能展示其中一个。我的问题是
当我隐藏一个dockWidget并显示另一个dockWidget时,新显示的大小与刚刚隐藏的大小相同,无论我设置了什么qsizepolicies, sizeHint, sizeconstrconstraint !我希望新显示的恢复自己的最后大小,但我找不到任何方法来调整QDockWidget
的大小,而不使用setMinimumSize
和setMaximumSize
固定其大小。
实际上有一种方法,但我认为它很难看:
setMinimumWidth(500);
setMaximumWidth(500);
qApp().processEvents();
setMinimumWidth(0);
setMaximumWidth(9999);
一定有更好的办法?!有什么建议吗?
来自文档:
QDockWidget充当其子部件的包装器,使用setWidget()进行设置。自定义大小提示、最小和最大大小以及大小策略应该在子小部件中实现。QDockWidget将尊重它们,调整自己的约束以包含框架和标题。大小限制不应该设置在QDockWidget本身,因为他们改变取决于它是否停靠;一个停靠的QDockWidget没有框架和更小的标题栏。
这意味着您不应该调整DockWidget的大小,而应该调整子部件的大小。
我尝试了你在你的问题中建议的解决方案,它适用于我,虽然有一个丑陋的闪光,而小部件经过一个额外的油漆周期。我还没有找到一个更好的方法,所以我现在将使用它,直到Qt发布更好的支持QDockWidget。
我希望会有更多的功能添加到QDockWidget API。它是一个很棒的API,但是有几个方面仍然非常缺乏。例如,这个获得选项卡QDockWidget索引的建议方法(直接从Qt FAQ中)很麻烦,而且容易出错。
我建议重载
protected :
virtual bool event ( QEvent * event );
并捕获改变大小的事件
例如:
QRect mGeo;
bool MyDockWidget::event ( QEvent * aEvent )
{
if(aEvent->isAccepted ())
{
if(aEvent->type()==QEvent::Hide)
{
mGeo=this->geometry();
}
if(aEvent->type()==QEvent::Show)
{
this->setGeometry(mGeo);
}
}
return QDockWidget::event(aEvent);
}
- 为char数组调整zlib-zpipe
- 调整大小后指向元素值的指针unordered_map有效?
- 在C++中调整向量中的索引
- 哪些库可以通过Opencv调整曝光率
- 如何调整 std::vector of Eigen::MatrixXd 的大小
- Alt+Enter 在 Win32 应用中,管理大小调整和分辨率
- 在容量内调整矢量大小时的性能影响
- 将 boost::odeint 与向量类一起使用,而无需调整向量的大小
- 将摄像机调整到俯视图
- Qt 图表条形图调整大小崩溃
- 除非重新绘制大小,否则SDL_Texture在调整大小后呈现黑色
- 调整布局上的 QGraphicsView 小部件的大小
- 如何在构建链接列表时调整头、尾指针
- 如何将旧的 C 样式 #define 映射与现代C++进行调整?
- 当您在此单词中搜索单词时调整字符数组的大小?
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何按另一个向量的方向调整一个向量?
- 调整QMainwindow的大小以适应Qdockwidget的大小
- 调整QDockWidget的大小
- 我如何通过拖动调整大小句柄来折叠QDockWidget