- 常用控件
- 按钮
- 容器组控件(Containers)
- Item View控件(Item Views)
- Input Widgets控件(Input Widgets)
- Input Widgets控件(Input Widgets)
- Combo Box:组合框
- Font Combo Box:字体组合框
- Line Edit:行编辑框
- Text Edit:文本编辑框
- Plain Text Edit:纯文本编辑框
- Spin Box:数值框
- Double Spin Box:双精度数值框
- Date Edit:日期编辑框
- Time Edit:时间编辑框
- DateTime Edit:日期时间编辑框
- Dial:拨号盘
- Horizonal Slider Bar: 水平滑动条
- Vertical Slider Bar: 垂直滑动条
- Horizontal Slider: 水平滑块
- Vertical Slider: 垂直滑块
- File Dialog:文件对话框
- Key Sequence Edit:快捷键编辑框
- Display Widgets: 显示控件
常用控件
Vertical Layout:垂直布局。
Horizontal Layout:横向(水平)布局。
Grid Layout:网格(栅格)布局。
Form Layout:表单布局。
Horizontal Spacer:水平间隔。
Vertical Spacer:垂直间隔。
表单
头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QPushButton> //命令按钮控制头文件
#include <QLabel> //显示标签头文件
#include <QGridLayout> //网格布局头文件
#include <QFormLayout>
#include <QLineEdit>
class MainWindow : public QMainWindow
{
Q_OBJECT 使用 Q_OBJECT 宏声明这是一个 QObject 派生类,启用 Qt 的元对象系统
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
QGridLayout *gridLayout; //网格布局对象
QPushButton *button1;
QPushButton *button2;
QPushButton *button3;
QPushButton *button4;
};
#endif // MAINWINDOW_H
源文件:
#include "mainwindow.h"
# if 0
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// 创建一个中心窗口部件
QWidget *centralWidget = new QWidget(this);
setCentralWidget(centralWidget);
// 创建一个栅格布局
QGridLayout *gridLayout = new QGridLayout(centralWidget);
gridLayout->setContentsMargins(10,10,10,10);//设置边距
gridLayout->setSpacing(10);//设置间距
//设置按钮
button1= new QPushButton("按钮1", this);
button1->setFixedHeight(50);//设置按钮高度
button1->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);//设置按钮大小策略
button2= new QPushButton("按钮2", this);
button2->setFixedWidth(50);//设置按钮宽度
button2->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);//设置按钮大小策略
button3= new QPushButton("按钮3", this);
button3->setFixedHeight(50);//设置按钮高度
button3->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);//设置按钮大小策略
button4= new QPushButton("按钮4", this);
button4->setFixedWidth(50);//设置按钮宽度
button4->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);//设置按钮大小策略
//@param parent 对象
//@param row 行号
//@param column 列号
//@param rowSpan 跨行数
//@param columnSpan 跨列数
//@param alignment 对齐方式
gridLayout->addWidget(button1,0,1,1,1);//设置按钮在网格布局的位置
gridLayout->addWidget(button2,0,0,3,1);//设置按钮在网格布局的位置
gridLayout->addWidget(button3,2,1,1,2);//设置按钮在网格布局的位置
gridLayout->addWidget(button4,1,1,1,1);//设置按钮在网格布局的位置
setLayout(gridLayout);
}
MainWindow::~MainWindow() {}
#endif
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// 创建一个中心窗口部件
QWidget *centralWidget = new QWidget(this);
setCentralWidget(centralWidget);
//创建一个表单布局
QFormLayout *formLayout = new QFormLayout(centralWidget);
QLineEdit *line1 = new QLineEdit(this);//创建输入框
QLineEdit *line2 = new QLineEdit(this);
QLineEdit *line3 = new QLineEdit(this);
formLayout->addRow("姓名:", line1);//添加行
formLayout->addRow("年龄:", line2);
formLayout->addRow("性别:", line3);
formLayout->setContentsMargins(10,10,10,10);//设置边距
formLayout->setSpacing(10);//设置间距
//formLayout->setRowWrapPolicy(QFormLayout::DontWrapRows);//设置不换行
formLayout->setRowWrapPolicy(QFormLayout::WrapLongRows);//设置包装长行
formLayout->setLabelAlignment(Qt::AlignLeft);//设置标签对齐方式为左对齐
setLayout(formLayout);
}
MainWindow::~MainWindow() {}
按钮
Push Button:命令按钮。
Tool Button:工具按钮。
Radio Button:单选按钮。
Check Box:复选框按钮。
Command Link Button:命令链接按钮。
Dialog Button Box:按钮盒。
Push Button 命令按钮。
头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
# include <QPushButton>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private :
QPushButton *button1;//按键1
QPushButton *button2;
private slots:
//声明按钮对应的槽函数
void button1_clicked();
void button2_clicked();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->setWindowTitle("My App");
//设置窗口大小
//@Param1: 左上角x坐标
//@Param2: 左上角y坐标
//@Param3: 宽度
//@Param4: 高度
this->setGeometry(0, 0, 400, 200);
//创建按钮
button1 = new QPushButton("Button 1", this);
button2 = new QPushButton("Button 2", this);
//设置按钮位置
//button1->move(100, 100);
button1->setGeometry(20, 20, 100, 50);
button2->setGeometry(20, 70, 100, 50);
//链接信号槽
connect(button1, SIGNAL(clicked()), this, SLOT(button1_clicked()));
connect(button2, SIGNAL(clicked()), this, SLOT(button2_clicked()));
}
MainWindow::~MainWindow() {}
void MainWindow::button1_clicked(){
//设置QMainWindow背景颜色
this->setStyleSheet("QMainWindow{background-color:rgba(255,0,0,100);}");
}
void MainWindow::button2_clicked(){
//设置QMainWindow背景颜色
this->setStyleSheet("QMainWindow{background-color:rgba(0,0,0,0.5);}");
}
Tool Button:工具按钮。
头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QApplication>
#include <QStyle> //引入QStyle类 ,样式
#include <QToolBar> //引入QToolBar类 ,工具条
#include <QToolButton> //引入QToolButton类 ,工具按钮
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QToolBar *toolBar; //工具条
QToolButton *toolButton; //工具按钮
private slots:
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
//设置窗口运行位置
this->setGeometry(0, 0, 400, 300);
//实例化工具栏
toolBar = new QToolBar(this);
//设置工具栏位置
toolBar->setGeometry(20, 20, 100, 100);
//实例化QStyle对象
QStyle *style = QApplication::style();
QIcon icon = style->standardIcon(QStyle::SP_TitleBarContextHelpButton);
//实例化ToolButton对象
toolButton =new QToolButton();
toolButton->setIcon(icon);//设置按钮图标
toolButton->setText("Help");//设置按钮提示信息
toolButton->setToolButtonStyle(Qt::ToolButtonTextUnd