QGroupBox在界面布局中的使用方法
- 格式:docx
- 大小:71.41 KB
- 文档页数:7
此例程主要展示用代码方式创建控件并用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 QMenuBarmain.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_OBJECTpublic: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_Hdialog.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列的控件(行编辑框控件)拉伸系数为10layout->setColumnStretch(2, 20);//将第2列的控件(文本编辑控件)拉伸系数为20gridGroupBox->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);}。