QT程序初始化时QDockWidget大小的调整方法
来源:互联网 发布:java接口时间记录 编辑:程序博客网 时间:2024/04/30 06:18
在QT中对于QDockWidget的resize()方法是无效的,因为QDockWidget的大小是由其中包含的控件决定的。在manual中这样说:
A QDockWidget acts as a wrapper for its child widget, set with setWidget(). Custom size hints, minimum and maximum sizes and size policies should beimplemented in the child widget. QDockWidget will respect them, adjusting its own constraints to include the frame and title.Size constraints should not be set on the QDockWidget itself, because they change depending on wether it is docked; a docked QDockWidget has no frame and a smaller title bar.
因此在程序初始化时不能简单地使用resize()等方法调整QDockWidget大小。
使用QMainWindow的程序在程序初始化时调整QDockWidget为上次程序记录下来的大小的方法:
//MainWindow中读取上次QDockWidget大小,在MainWindow的构造函数中所有控件初始化完成后调用
voidMainWindow::ReadSettings()
{
QCoreApplication::setOrganizationName("GLZN");
QCoreApplication::setOrganizationDomain("glzn.com");
QCoreApplication::setApplicationName("IEDClient");
QSettings setting;
setting.beginGroup(QString::fromUtf8("Catalogue View"));
QSize size = setting.value(QString::fromUtf8("lastRuntimeSize"),QSize(500,500)).toSize();
setCatalogueViewSize(size);
setting.endGroup();
}
//MainWindow中记录程序结束时QDockWidget的大小信息,在MainWindow的onCloseEvent()中调用。
voidMainWindow::WriteSettings()
{
QSettings setting;
setting.beginGroup(QString::fromUtf8("Catalogue View"));
QSize size = ui->dockWidget_Catalogue->size();
setting.setValue(QString::fromUtf8("lastRuntimeSize"),size);
//记录下QDockWidget的原先的最大尺寸与最小尺寸
setting.setValue(QString::fromUtf8("oldMaxSize"),QSize(16777215,16777215));
setting.setValue(QString::fromUtf8("oldMinSize"),QSize(1,1));
setting.endGroup();
}
//ReadSettings中用于调整QDockWidget的函数
voidMainWindow::setCatalogueViewSize(QSizesize)
{
QDockWidget* dock = ui->dockWidget_Catalogue;
if (size.width()>= 0)
{
int nWidth = dock->width();
if (nWidth <size.width())
dock->setMinimumWidth(size.width());
else
dock->setMaximumWidth(size.width());
}
if (size.height()>= 0)
{
int nHeight = dock->height();
if (nHeight <size.height())
dock->setMinimumHeight(size.height());
else
dock->setMaximumHeight(size.height());
}
//如果只是设定最小宽度等信息会造成QDockWidget调整大小出现问题
QTimer::singleShot(0,this,SLOT(onRestoreCatalogueView()));
//需要在构造函数完成之后的事件循环中重新调整最小宽度等信息
return;
}
//MainWindow中响应重新设置最小宽度等信息。
voidMainWindow::onRestoreCatalogueView()
{
QSettings setting;
QSize oldMaxSize = setting.value(QString::fromUtf8("oldMaxSize"),QSize(16777215,16777215)).toSize();
QSize oldMinSize = setting.value(QString::fromUtf8("oldMinSize"),QSize(1,1)).toSize();
ui->dockWidget_Catalogue->setMaximumSize(oldMaxSize);
ui->dockWidget_Catalogue->setMinimumSize(oldMinSize);
}
- QT程序初始化时QDockWidget大小的调整方法
- QT QDockWidget 重叠方法
- 设置QDockWidget的初始大小
- 嵌入式多媒体设计7--QDockWidget大小调整及隐藏标题
- 【Qt】QDockWidget
- QDockWidget设置初始大小的一个解决方案
- QDockWidget设置初始大小的一个解决方案
- qt 自动调整大小的实现
- Qt中自动调整大小的实现
- qt QDockWidget QStackWidget的简单使用
- 分享 调整“quiver”箭头大小的程序
- 运行时拖动控件及调整控件大小的方法
- Vista下调整硬盘分区大小的方法
- VMware调整Linux硬盘大小的方法
- VC++禁止调整窗口大小的方法
- VMware调整Linux硬盘大小的方法
- Matlab调整图像大小的方法
- echarts 调整图表大小的方法
- ios 如何获得系统时间和日期
- 在排序数组中查找和为给定值的两个数字
- 备份
- >/dev/null 2>&1的意义
- 获得某个用户使用某个coupon的次数
- QT程序初始化时QDockWidget大小的调整方法
- 2013年9—12月新托福考试终极报名指南!
- strcpy应该注意的问题
- I Am The Captain of My Soul
- 如何用二进制表示一个小数
- Linux 共享库: LD_LIBRARY_PATH 与ld.so.conf
- QVariant类学习
- iOS学习之WebView的使用 (主要是下面的全屏半透明实现)
- dockpanelsuite的git