读Qt Demo——Basic Layouts Example
此例程主要展示用代码方式创建控件并用Layout管理类对其进行布局;
例程来自Qt5.2,如过是默认安装,代码位于:C:\Qt\Qt5.2.0\5.2.0\mingw48_32\examples\widgets\layouts\basiclayouts
涉及类:QDialog QPushbotton QGroupBox QLabel QLineEdit QComboBox QTextEdit QHBoxLayout QVBoxLayout QFormLayout QGridLayout QMenu QMenuBar

main.cpp
#include <QApplication> #include "dialog.h" int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Dialog dialog;
dialog.show(); return app.exec();
}
dialog.h
#ifndef DIALOG_H
#define DIALOG_H #include <QDialog> class QAction;
class QDialogButtonBox;
class QGroupBox;
class QLabel;
class QLineEdit;
class QMenu;
class QMenuBar;
class QPushButton;
class QTextEdit; class Dialog : public QDialog
{
Q_OBJECT public:
Dialog(); private:
void createMenu();
void createHorizontalGroupBox();
void createGridGroupBox();
void createFormGroupBox(); enum { NumGridRows = 3, NumButtons = 4 }; QMenuBar *menuBar;
QGroupBox *horizontalGroupBox;
QGroupBox *gridGroupBox;
QGroupBox *formGroupBox;
QTextEdit *smallEditor;
QTextEdit *bigEditor;
QLabel *labels[NumGridRows];
QLineEdit *lineEdits[NumGridRows];
QPushButton *buttons[NumButtons];
QDialogButtonBox *buttonBox; QMenu *fileMenu;
QAction *exitAction;
}; #endif // DIALOG_H
dialog.cpp
#include <QtWidgets> #include "dialog.h" Dialog::Dialog()
{
createMenu(); //创键菜单
createHorizontalGroupBox();//创建第一组控件
createGridGroupBox(); //创建第二组控件
createFormGroupBox(); //创建第三组控件 bigEditor = new QTextEdit; //创建一个独立的文本编辑框
bigEditor->setPlainText(tr("This widget takes up all the remaining space "
"in the top-level layout.")); //创建对话框按钮组
buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok
| QDialogButtonBox::Cancel); connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); //连接按钮信号
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); QVBoxLayout *mainLayout = new QVBoxLayout; //创建垂直布局对象
mainLayout->setMenuBar(menuBar); //加入菜单栏
mainLayout->addWidget(horizontalGroupBox); //加入第一组控件
mainLayout->addWidget(gridGroupBox); //加入第二组控件
mainLayout->addWidget(formGroupBox); //加入第三组控件
mainLayout->addWidget(bigEditor); //加入文本编辑框
mainLayout->addWidget(buttonBox); //加入按钮
setLayout(mainLayout); //布局加入app对象 setWindowTitle(tr("Basic Layouts")); //设置窗口标题
} //创建菜单栏
void Dialog::createMenu()
{
menuBar = new QMenuBar; //Dialog类没有菜单栏,所以创建一个 fileMenu = new QMenu(tr("&File"), this); //创建一个菜单
exitAction = fileMenu->addAction(tr("E&xit"));//添加一个菜单选项
menuBar->addMenu(fileMenu); //菜单加入菜单栏里 connect(exitAction, SIGNAL(triggered()), this, SLOT(accept()));//连接菜单信号
} //加入第一组控件
void Dialog::createHorizontalGroupBox()
{
horizontalGroupBox = new QGroupBox(tr("Horizontal layout")); //创建组控件
QHBoxLayout *layout = new QHBoxLayout; //创建水平布局对象 for (int i = 0; i < NumButtons; ++i) { //创建按钮
buttons[i] = new QPushButton(tr("Button %1").arg(i + 1));
layout->addWidget(buttons[i]); //加入布局
}
horizontalGroupBox->setLayout(layout); //将布局好的按钮添加套组控件里
} //加入第二组控件
void Dialog::createGridGroupBox()
{
gridGroupBox = new QGroupBox(tr("Grid layout")); //创建组控件
QGridLayout *layout = new QGridLayout; //创建网格布局对象 for (int i = 0; i < NumGridRows; ++i) {
labels[i] = new QLabel(tr("Line %1:").arg(i + 1)); //创建标签控件
lineEdits[i] = new QLineEdit; //创建行编辑框控件
layout->addWidget(labels[i], i + 1, 0); //将建标签控件放在i+1行,0列位置
layout->addWidget(lineEdits[i], i + 1, 1); //将建标编辑框控件放在i+1行,1列位置
} smallEditor = new QTextEdit; //创建一个文本编辑控件
smallEditor->setPlainText(tr("This widget takes up about two thirds of the "
"grid layout."));
layout->addWidget(smallEditor, 0, 2, 4, 1); //将文本编辑控件放在0行,2列位置,行跨度为4行,列跨读为1列 layout->setColumnStretch(1, 10);//将第1列的控件(行编辑框控件)拉伸系数为10
layout->setColumnStretch(2, 20);//将第2列的控件(文本编辑控件)拉伸系数为20
gridGroupBox->setLayout(layout);
} //加入第三组控件
void Dialog::createFormGroupBox()
{
formGroupBox = new QGroupBox(tr("Form layout"));//创建组控件
QFormLayout *layout = new QFormLayout; //创建表格式布局对象
layout->addRow(new QLabel(tr("Line 1:")), new QLineEdit); //添加第一个标签和行编辑器
layout->addRow(new QLabel(tr("Line 2, long text:")), new QComboBox);//添加第二个标签和行编辑器
layout->addRow(new QLabel(tr("Line 3:")), new QSpinBox);//添加第三个标签和行编辑器
formGroupBox->setLayout(layout);
}
读Qt Demo——Basic Layouts Example的更多相关文章
- 虹软人脸识别——官方 Qt Demo 移植到 Linux
一.前言 最近需要在 Linux 平台下开发一个人脸识别相关的应用,用到了虹软的人脸识别 SDK.之前在 Windows 平台用过,感觉不错,SDK 里面还带了 Demo 可以快速看到效果.打开 Li ...
- 读写锁--DEMO
package com.demo.read.write.lock; import java.util.HashMap; import java.util.Map; import java.util.c ...
- Qt Demo Http 解析网址 Openssl
今天练习了一下Qt 解析http协议,在Demo中使用到了Openssl 一上午的时间都是编译openssl,不过还是没有成功,很遗憾,这里整理了有关这个Demo的本件 网盘连接:见下方评论吧,长传太 ...
- [QT][DEMO] QTableWidget 设置某一列禁止编辑
例程 : 又是好风景 : http://blog.csdn.net/qiao_yihan/article/details/46413345 关键点: 1.QTableWidgetItem 的 setF ...
- 1.Basic Layouts
使用过mfc编程,就知道控件需要自己拖放.当一个界面有很多小控件时,摆放这些控件特别麻烦. 但是qt编程中有布局(Layout),让系统来摆放控件.使整个控件有一致的外观和感觉,特别方便. 1.水平方 ...
- Beginning Android 4 中 Demo Basic/Switch 的问题.
作者的版本: layout (main.xml): <?xml version="1.0" encoding="utf-8"?> <Linea ...
- QT3D场景快速绘制入门学习
在QT中实现3D绘制的方式: 1) 使用QT OpenGL模块(QOpenGLWidget等) 2) 使用QT 3D C++类(QEntity等) 3) 使用QT 3D QML类(Enti ...
- Qt Examples Qt实例汇总
ActiveQt Examples Using ActiveX from Qt applications. Animation Framework Examples Doing animations ...
- Qt Creater中的.pro文件和.pri文件
初学Qt,使用Qt Creater打开Demo "QT 3D Basic Shapes C++ Example",发现除了pro文件外,还有一个pri文件,在此小白一下! *.pr ...
随机推荐
- 终极解决方案:windows10资源管理器假死
想解决这个问题有以下几点: 1,不要相信所谓的powershell里面输命令可以重装系统自带应用从而解决假死问题! 2,不要相信烂大街的“自启动User Manager”服务可以解决假死问题! 3,不 ...
- asp.net清除页面缓存防止同时登录
//清除页面缓存,防止页面回退重复提交数据 在页面里做以下设置就可以使页面的缓存失效,每次都需要获取新页面. Response.Cache.SetCacheability(System.Web.Htt ...
- POJ 2752 (KMP 所有可能长度的前缀后缀) Seek the Name, Seek the Fame
题意: 求一个字符串的相同前缀后缀的所有可能的长度,这里该字符串其本身也算自己的前缀和后缀. 分析: 我们知道next数组的性质是,该字符之前的字符串的最大相同前缀后缀. 既然知道了最大的,即next ...
- uvalive 3523 Knights of the Round Table 圆桌骑士(强连通+二分图)
题目真心分析不出来.看了白书才明白,不过有点绕脑. 容易想到,把题目给的不相邻的关系,利用矩阵,反过来建图.既然是全部可行的关系,那么就应该能画出含奇数个点的环.求环即是求双连通分量:找出所有的双连通 ...
- poj 1787 Charlie's Change
// 题意 给定一个数p,要求用四种币值为1,5,10,25的硬币拼成p,并且硬币数要最多,如果无解输出"Charlie cannot buy coffee.",1<=p&l ...
- Delphi 函数参数修饰中的var 、out和const
(1)var修饰符 添加var 是地址传递,会修改原有的变量 var s: string; begin S := 'Hello'; ChangeSVar(s); ShowMessage(S); e ...
- 回调函数的应用误区4(c/s OK版本回调小程序)
VC++深入详解里面说得也挺好:回调函数的实现机制: 1)定义一个回调函数 2)“函数实现者”(回调函数所在的模块)在初始化的时候,将回调函数的函数指针注册给“调用者”. 3)当特定的事件或条件发生的 ...
- [Papers]NSE, $u_3$, Lebesgue space [Zhou-Pokorny, Nonlinearity, 2009]
$$\bex u_3\in L^p(0,T;L^q(\bbR^3)),\quad \frac{2}{p}+\frac{3}{q}=\frac{3}{4}+\frac{1}{2q},\quad \fra ...
- WebForm+Web.config: 超时时间已到。在操作完成之前超时时间已过或服务器未响应。
ylbtech-Error-WebForm+Web.config: 超时时间已到.在操作完成之前超时时间已过或服务器未响应. 超时时间已到.在操作完成之前超时时间已过或服务器未响应. 1.A,错误代码 ...
- Apache OFBiz 学习笔记 之 实体引擎
1.概述 entity engine和常见的ORM有一点很大的不同,他的mapping object只有一个 GenericEntity,称它的entity engine 为adaptive ...