嵌入式多媒体设计7--QDockWidget大小调整及隐藏标题
来源:互联网 发布:淘宝零食店策划书 编辑:程序博客网 时间:2024/05/17 03:07
转自:http://www.cnblogs.com/xdao/archive/2013/04/09/mutilmedia-7.html
做播放器当然少不了播放列表,播放列表又好几种形式,一种使用另外的窗口,如千千静听;
一种使用多标签,如酷狗音乐;一种使用停靠窗口,如QQ影音。由于我做的是播放器,是在
4.3寸的屏上运行,便选择了停靠窗口。
在Qt里停靠窗口是QDockWidget,它的显示区域如图,摘自Qt帮助文档。
可以对它的属性进行一系列的设置,具体的看帮助文档。
可是当我使用QDockWidget后发现,右边的列表居然占了屏幕一大半。于是我就用resize来调整它
的大小,可是依然如故;接着我又把QListWidget加上resize,结果还是如此。没办法了,只好借助
伟大的网络了,原来是“QDockWidget acts as a wrapper for its child widget, custom size
hints, minimum and maximum sizes and size policies have to be implemented in the
child widget.”即我们要在子控件里设置大小,来自qt的faq,它给的代码如下:
#include <QtGui> class Label : public QLabel { public: Label(QWidget *parent) : QLabel(parent) { setAutoFillBackground(true); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); QPalette pal = palette(); pal.setBrush(QPalette::Window, Qt::red); setText("The label"); setPalette(pal); } QSize sizeHint() const { return QSize(400, 500); } }; int main(int argc, char **argv) { QApplication app(argc, argv); QMainWindow box; box.setCentralWidget(new QLabel("Central Widget", &box)); QDockWidget *dock = new QDockWidget(&box); dock->setWidget(new Label(dock)); box.addDockWidget(Qt::TopDockWidgetArea, dock ); box.show(); return app.exec(); }
不过我可不想继承QListWidget,于是继续搜索,便找到了下面的方法,来自stackoverflow,
代码如下:
//在头文件里添加private void setDockSize(QDockWidget *dock, int setWidth, int setHeight); public slots: void returnToOldMaxMinSizes();//在源文件里添加QSize oldMaxSize, oldMinSize;void MainWindow::setDockSize(QDockWidget* dock, int setWidth,int setHeight){ oldMaxSize=dock->maximumSize(); oldMinSize=dock->minimumSize(); if (setWidth>=0) if (dock->width()<setWidth) dock->setMinimumWidth(setWidth); else dock->setMaximumWidth(setWidth); if (setHeight>=0) if (dock->height()<setHeight) dock->setMinimumHeight(setHeight); else dock->setMaximumHeight(setHeight); QTimer::singleShot(1, this, SLOT(returnToOldMaxMinSizes()));}void MainWindow::returnToOldMaxMinSizes(){ ui->dockWidget->setMinimumSize(oldMinSize); ui->dockWidget->setMaximumSize(oldMaxSize);}
大小调整解决了,可是QDockWidget还有个标题栏,即使不设置标题,它也会显示空白的标题,这
与我的需求不符,可惜我不会隐藏,继续搜索发现了一个非常天才的做法,来自Qt论坛,代码如下:
QWidget * qw=new QWidget(this);
Dockwidget->setTitleBarWidget(qw);
哈哈,居然把标题栏重新设置为一个空的Widget。
作者:半山
出处:http://www.cnblogs.com/xdao/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-IT知行。
- 嵌入式多媒体设计7--QDockWidget大小调整及隐藏标题
- QT程序初始化时QDockWidget大小的调整方法
- 硬盘分区及大小调整
- 硬盘分区及大小调整
- 设置QDockWidget的初始大小
- HTML及多媒体网页设计
- Tomcat 内存及控制台标题调整
- QDockwidget的用法及经验
- QDockwidget的用法及经验
- QDockWidget
- QDockWidget
- QDockWidget
- QDockWidget设置初始大小的一个解决方案
- QDockWidget设置初始大小的一个解决方案
- 如何动态调整控件大小和隐藏控件显示
- 一步一步学硬盘分区及大小调整
- TOMCAT内存溢出及大小调整
- JVM堆大小调整参数及建议
- 科大讯飞和Tizen-TTS语音合成引擎
- UVa 10369 - Arctic Network
- C++ STL(set)
- linux 流量监控之iftop软件
- 深入理解计算机系统(第二版) 家庭作业 第三章
- 嵌入式多媒体设计7--QDockWidget大小调整及隐藏标题
- Oracle Hints详解
- Qevent
- 关于PhoneGap
- PROGRAMMING IN C++ Nell Dale Chip Weems
- 数组里的正数和负数排序
- 常见排序算法总结【转载+整合】
- <<C语言深度剖析>>学习笔记之六之内存管理
- Gray-level Co-occurrence Matrix(灰度共生矩阵)