Qt 第六章 FindDialog和三种布局。
来源:互联网 发布:文明5 mac 迅雷 编辑:程序博客网 时间:2024/06/09 02:49
第六章 对FindDialog有三种构建方法。
第一种是固定大小,窗体大小无法拖动和改变。
第二种 可以调整大小
不用layout来做,在构造函数中,指定了窗体大小之后,还需要重载
resizeEvent函数来对窗体重新调整:
void FindFileDialog::resizeEvent(QResizeEvent * /* event */){ int extraWidth = width() - minimumWidth(); int extraHeight = height() - minimumHeight(); namedLabel->setGeometry(9, 9, 50, 25); namedLineEdit->setGeometry(65, 9, 100 + extraWidth, 25); lookInLabel->setGeometry(9, 40, 50, 25); lookInLineEdit->setGeometry(65, 40, 100 + extraWidth, 25); subfoldersCheckBox->setGeometry(9, 71, 156 + extraWidth, 23); tableWidget->setGeometry(9, 100, 156 + extraWidth, 50 + extraHeight); messageLabel->setGeometry(9, 156 + extraHeight, 156 + extraWidth, 25); findButton->setGeometry(171 + extraWidth, 9, 85, 32); stopButton->setGeometry(171 + extraWidth, 47, 85, 32); closeButton->setGeometry(171 + extraWidth, 84, 85, 32); helpButton->setGeometry(171 + extraWidth, 149 + extraHeight, 85, 32);}
以messagelabel为例:
把高度调为17.
调整大小时,x不变,y坐标变。水平宽度变,但是垂直高度不变。
x不变,反映出来就是各个控件,在各自的子布局中,距离左边缘的位置不变。
EditLine的垂直距离也不变。
第三种是用layout来布局,而非指定大小和位置的“手动”。
(1)可以学到三种布局。
(2)学会构造QTableWidget
(3)手动布局以及重载resizeEvent函数。
感觉这个最合理,最后的MessageLabel小的恰到好处。
这个是QTableWidget。
//开始构建QTableWidget QStringList labels; labels << tr("Name") << tr("In Folder") << tr("Size") << tr("Modified"); tableWidget = new QTableWidget; //四列的table tableWidget->setColumnCount(4); //table水平的headerlabel tableWidget->setHorizontalHeaderLabels(labels);
用layout来布局的,很顺眼:
各个窗体的位置
QGridLayout *leftLayout = new QGridLayout; leftLayout->addWidget(namedLabel, 0, 0); leftLayout->addWidget(namedLineEdit, 0, 1); leftLayout->addWidget(lookInLabel, 1, 0); leftLayout->addWidget(lookInLineEdit, 1, 1); leftLayout->addWidget(subfoldersCheckBox, 2, 0, 1, 2); leftLayout->addWidget(tableWidget, 3, 0, 1, 2); leftLayout->addWidget(messageLabel, 4, 0, 1, 2); QVBoxLayout *rightLayout = new QVBoxLayout; rightLayout->addWidget(findButton); rightLayout->addWidget(stopButton); rightLayout->addWidget(closeButton); rightLayout->addStretch(); rightLayout->addWidget(helpButton); QHBoxLayout *mainLayout = new QHBoxLayout; mainLayout->addLayout(leftLayout); mainLayout->addLayout(rightLayout); // setLayout(mainLayout); setWindowTitle(tr("Find Files or Folders"));
关闭窗体:
connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));
- Qt 第六章 FindDialog和三种布局。
- QT的FindDialog
- QT学习笔记之二 FindDialog
- QT三种布局的使用方法
- 第六章 布局管理
- task0001第六部分之三列布局
- C++ GUI QT 第4版 第六章 布局管理 (1)
- C++ GUI QT 第4版 第六章 布局管理 (2)
- C++ GUI QT 第4版 第六章 布局管理 (3)
- C++ GUI QT 第4版 第六章 布局管理 (4)
- 三种布局模型和轮播
- Essential Qt 第六章 记事本(三)添加图片,工具栏,状态栏与快捷键。
- qboxlayout与qt布局(三)
- 第六周 双飞翼布局和圣杯布局学习
- 精通IOS开发第六版学习第五章---旋转和布局
- 第六章 JavaFx控件与布局
- Qt 第六章 splitter的例子。
- Qt 第六章 MailClient的例子
- zabbix-1.8.7版本安装与1.8.4的区别
- pro*C/C++支持c++开发实例
- ext4.0
- linux socket编程的异常原因及处理
- 字符编解码的故事(ASCII,ANSI,Unicode,Utf-8)
- Qt 第六章 FindDialog和三种布局。
- c++ 重载 覆盖 隐藏的区别和执行方式
- J2SE 1.5新特性之For循环
- VC++中的各种文件各起的是什么做用?
- 计算机视觉方向的一些顶级会议和期刊
- org.xml.sax.SAXParseException: Invalid byte 2 of 2-byte UTF-8 sequence.
- 华为路由Quidway 2600 限速
- 最小点路径覆盖(匈牙利算法)
- 线程学习