读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 ...
随机推荐
- Redis cluster学习 & Redis常识 & sort操作
Redis中的5种数据类型String.Hash.List.Set.Sorted Set. Redis源码总代码一万多行. 这篇文章有一些Redis "常识" http://www ...
- LinQ综合应用实例
直接上代码,内容很浅显易懂,在这里就不做更多的解释,解释见代码注释. using System; using System.Collections.Generic; using System.Linq ...
- UVa 10735 (混合图的欧拉回路) Euler Circuit
题意: 给出一个图,有的边是有向边,有的是无向边.试找出一条欧拉回路. 分析: 按照往常的思维,遇到混合图,我们一般会把无向边拆成两条方向相反的有向边. 但是在这里却行不通了,因为拆成两条有向边的话, ...
- Ubuntu解决Sublime Text 2安装GBK Encoding Support插件仍然乱码
Ubuntu 12.04 32位下,为Sublime Text 2安装Package Control: 1. 用Ctrl+~打开控制台,输入 import urllib2,os; pf='Packag ...
- Android 使用库项目时的一个特殊tip
前提: 项目A作为库项目被项目B引用,但是项目A中有自定义的控件和自定义的属性,当在项目B中使用自定义的属性时,编译时就会直接报错:No resource identifier found for a ...
- Android 项目利用 Android Studio 和 Gradle 打包多版本APK
在项目开发过程中,经常会有需要打包不同版本的 APK 的需求. 比如 debug版,release版,dev版等等. 有时候不同的版本中使用到的不同的服务端api域名也不相同. 比如 debug_ap ...
- PIG的配置
Pig是一个客户端应用程序,就算你要在Hadoop集群上运行Pig,也不需要在集群上装额外的东西.Pig的配置非常简单: 1.下载pig,网址http://pig.apache.org/ 2.在机器上 ...
- XCode修改工程名注意
以下文字转载过来,在使用的过程中遇到几个问题 1.需要在 Build phases 里面,检查下 Link Binary With Libraries 以及Compline Sources 2.Bul ...
- IOS 第三方开源库记录
网易客户端使用 1.ZipArchive 2.wax 3.TTTAttributedLabel 4.SSKeychain 5.SDWebImage 6.RegexKitLite 7.pop 8.NJK ...
- webstorm下设置sass
关于sass,就不想多说什么了.只要你有css基础,十分钟入门好吗.可以参考下资料:http://www.w3cplus.com/sassguide/ 今天想说的是webStorm下如何实现sass自 ...