- 常用控件
- 按钮
- 容器组控件(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::ToolButtonTextUnderIcon);//设置按钮样式
//添加按钮到工具栏
toolBar->addWidget(toolButton);
}
MainWindow::~MainWindow() {}
Radio Button:单选按钮。
头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QRadioButton>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
//声明Radio Button
QRadioButton *radioButton1, *radioButton2;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->setGeometry(0, 0, 400, 300);
this->setStyleSheet("QMainWindow{background-color:rgba(20,50,40,20%);}");
//实例化Radio Button
radioButton1= new QRadioButton("radioButton1",this);
radioButton2= new QRadioButton("radioButton2",this);
//设置Radio Button的位置
radioButton1->setGeometry(10, 10, 100, 30);
radioButton2->setGeometry(120, 10, 100, 30);
//设置默认选中radioButton1
radioButton1->setChecked(true);
}
MainWindow::~MainWindow() {}
Check Box:复选框按钮。
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QCheckBox>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QCheckBox *checkBox;
private slots:
void checkBoxClicked(int);
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->setGeometry(0, 0, 400, 300);
this->setStyleSheet("QMainWindow {background-color: rgba(43, 76, 0, 40%);}");
//实例化QCheckBox对象
checkBox = new QCheckBox(this);
//设置QCheckBox的位置和大小
//@Param1: 左上角x坐标
//@Param2: 左上角y坐标
//@Param3: 宽度
//@Param4: 高度
checkBox->setGeometry(100, 100, 200, 20);
checkBox->setCheckState(Qt::Checked);//设置初始状态为选中
//设置显示文本
checkBox->setText("复选");
//设置字体颜色
checkBox->setStyleSheet("color: white;");
checkBox->setTristate();//开启三态
connect(checkBox, SIGNAL(stateChanged(int)), this, SLOT(checkBoxClicked(int)));
}
MainWindow::~MainWindow() {}
void MainWindow::checkBoxClicked(int state){
//判断checkBox的状态
switch (state) {
case Qt::Checked:
qDebug() << "复选框被选中";
checkBox->setText("复选框被选中");
break;
case Qt::PartiallyChecked:
qDebug() << "复选框部分选中";
checkBox->setText("复选框部分选中");
break;
case Qt::Unchecked:
qDebug() << "复选框未选中";
checkBox->setText("复选框未选中");
break;
}
}
Command Link Button:命令链接按钮。
头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QCommandLinkButton> //引入Command Link Button控件
#include <QDesktopServices>//引入桌面服务
#include <QUrl>//引入URL
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
public:
//声明Command Link Button
QCommandLinkButton *cmdLinkButton;
public slots:
void on_cmdLinkButton_clicked();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->setGeometry(0,0,400,300);
this->setStyleSheet("QMainWindow {background-color: rgba(43, 76, 0, 40%);}");
//设置标题
cmdLinkButton = new QCommandLinkButton("标题","内容",this);
cmdLinkButton->setGeometry(100,100,200,80);
connect(cmdLinkButton,SIGNAL(clicked()),this,SLOT(on_cmdLinkButton_clicked()));
}
MainWindow::~MainWindow() {}
void MainWindow::on_cmdLinkButton_clicked(){
//调用操作系统打开浏览器
QDesktopServices:: openUrl(QUrl("https://www.baidu.com"));
}
Dialog Button Box:按钮盒。
头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDialogButtonBox> //引入按钮盒
#include <QPushButton> //引入按钮
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
public:
QDialogButtonBox *buttonBox;//按钮盒
QPushButton *pushButton1;//按钮
QPushButton *pushButton2;//按钮
public slots:
void on_pushButton_clicked(QAbstractButton *button);
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
this->setGeometry(0, 0, 400, 300);
buttonBox= new QDialogButtonBox(this);
pushButton1= new QPushButton("自定义Button 1", this);
//pushButton2= new QPushButton("Button 2", this);
buttonBox->setGeometry(30,30,200,80);
buttonBox->addButton(QDialogButtonBox::Cancel)->setText("取消");//添加取消按钮
buttonBox->addButton(pushButton1,QDialogButtonBox::AcceptRole);//添加自定义按钮
//讲信号与槽连接起来
connect(buttonBox, SIGNAL(clicked(QAbstractButton *)),
this, SLOT(on_pushButton_clicked(QAbstractButton *)));
}
MainWindow::~MainWindow() {}
void MainWindow::on_pushButton_clicked(QAbstractButton *button){
if(button==buttonBox->button(QDialogButtonBox::Cancel)){
qDebug("取消按钮被点击了");
} else if (button==pushButton1){
qDebug("自定义按钮1被点击了");
}
}
容器组控件(Containers)
Group Box:组合框:提供带有标题的组合框框架。
Scroll Area:滚动区域。
Tool Box:工具箱。
Tab Widget:标签小部件。
Stacked Widget:堆叠部件。
Frame:框架。
Widget:小部件。
Mdi Area:MDI 区域。
Dock Widget:停靠窗体部件。
QAxWidget:封装 Flash 的 ActiveX 控件。
Group Box:组合框。
头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QGroupBox>
#include <QGridLayout>
#include <QRadioButton>
#include <QPushButton>
#include <QCheckBox>
#include <QMenu>
#include <QVBoxLayout> //可以在水平方向和垂直方向进行排列的控件 QHboxLayout/QVBoxLayout 所继承
class MainWindow : public QWidget
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QWidget(parent)
{
//组合框 1:
QGroupBox *group1 = new QGroupBox("Group1");//创建groupBox
QRadioButton *button1 = new QRadioButton("Button1");//创建按钮
QRadioButton *button2 = new QRadioButton("Button2");//创建按钮
QRadioButton *button3 = new QRadioButton("Button3");//创建按钮
QVBoxLayout *layout = new QVBoxLayout();//创建垂直布局
layout->addWidget(button1);//添加按钮到布局
layout->addWidget(button2);
layout->addWidget(button3);
group1->setLayout(layout);//设置groupBox的布局
//组合框 2:
QGroupBox *group2 = new QGroupBox("Group2");//创建groupBox
QCheckBox *button4 = new QCheckBox("Button4");//创建按钮
QCheckBox *button5 = new QCheckBox("Button5");//创建按钮
QCheckBox *button6 = new QCheckBox("Button6");//创建按钮
button4->setTristate(true);//设置复选框为三状态
button5->setChecked(true);//设置复选框为选中状态
QVBoxLayout *layout2 = new QVBoxLayout();//创建垂直布局
layout2->addWidget(button4);//添加按钮到布局
layout2->addWidget(button5);
layout2->addWidget(button6);
group2->setLayout(layout2);//设置groupBox的布局
//组合框 3:
QGroupBox *group3 =new QGroupBox("Group3");//创建groupBox
group3->setCheckable(true);//设置groupBox为可选中
QRadioButton *button7 = new QRadioButton("Button1");
QRadioButton *button8 = new QRadioButton("Button2");
QCheckBox *button9 = new QCheckBox("Button3");
QHBoxLayout *layout3 = new QHBoxLayout();//创建水平布局
layout3->addWidget(button7);//添加按钮到布局
layout3->addWidget(button8);
layout3->addWidget(button9);
group3->setLayout(layout3);//设置groupBox的布局
//组合框 4:
QGroupBox *group4 =new QGroupBox("Group4");//创建groupBox
group4->setCheckable(true);//设置groupBox为可选中
group4->setChecked(true);//设置groupBox为选中状态
QPushButton *button10 = new QPushButton("Button1");
//创建子菜单
QMenu *menu = new QMenu(this);//创建菜单
menu->addAction("Action1");//添加菜单项
menu->addAction("Action2");
menu->addAction("Action3");
button10->setMenu(menu);//设置按钮的菜单
QHBoxLayout *layout4 = new QHBoxLayout();//创建水平布局
layout4->addWidget(button10);//添加按钮到布局
group4->setLayout(layout4);//设置groupBox的布局
QGridLayout* mainLayout = new QGridLayout(this);//创建主布局
mainLayout->addWidget(group1, 0, 0, 1, 2);//添加groupBox到主布局的第一行第一列,占1行两列
mainLayout->addWidget(group2, 0, 2, 1, 2);//添加groupBox到主布局的第一行第一列,占1行两列
mainLayout->addWidget(group3, 0, 4, 1, 2);//添加groupBox到主布局的第一行第一列,占1行两列
mainLayout->addWidget(group4, 4, 0, 1, 2);//添加groupBox到主布局的第一行第一列,占1行两列
this->setLayout(mainLayout);//设置主布局
}
MainWindow::~MainWindow() {}
Scroll Area:滚动区域。
头文件:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QVBoxLayout>
#include <QScrollArea>
#include <QLabel>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
QVBoxLayout *mainLayout; //声明一个垂直布局
QScrollArea *scrollArea; //声明一个滚动区域
QWidget *contentWidget; //声明一个内容部件
QVBoxLayout *contentLayout; //声明一个内容布局
};
#endif // WIDGET_H
#include "widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent) {
// 创建主布局
mainLayout = new QVBoxLayout(this);// 创建垂直布局
// 创建滚动区域
scrollArea = new QScrollArea(this);
scrollArea->setWidgetResizable(true);// 设置滚动区域可伸缩
// 创建内容小部件
contentWidget = new QWidget();
scrollArea->setWidget(contentWidget);
// 为内容小部件创建布局
contentLayout = new QVBoxLayout(contentWidget);// 创建垂直布局
// 添加一些标签到内容布局中
for (int i = 0; i < 50; ++i) {
// 创建标签
//@param text 标签文本
//@param parent 父对象
QLabel *label = new QLabel(QString("Label %1").arg(i), contentWidget);
contentLayout->addWidget(label);//添加到布局中
}
// 将滚动区域添加到主布局中
mainLayout->addWidget(scrollArea);
// 设置窗口属性
this-> setLayout(mainLayout);
this->setWindowTitle("QScrollArea 示例");
this->resize(300, 200);
}
Widget::~Widget() {
// 清理资源
}
Tool Box:工具箱。
#include <QApplication>
#include <QToolBox>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QVBoxLayout>
#include <QWidget>
int main(int argc, char *argv[]) {
// 创建QApplication实例,这是Qt应用程序的入口点
QApplication app(argc, argv);
// 创建一个QToolBox实例,用于管理多个工具选项卡
QToolBox toolBox;
// 创建第一个选项卡的内容
QWidget *page1 = new QWidget(); // 创建一个QWidget实例,作为第一个选项卡的内容容器
QVBoxLayout *layout1 = new QVBoxLayout(page1); // 创建一个垂直布局管理器,并将其设置为page1的布局
QPushButton *button1 = new QPushButton("Button 1"); // 创建一个按钮,显示文本为"Button 1"
QLabel *label1 = new QLabel("Label 1"); // 创建一个标签,显示文本为"Label 1"
layout1->addWidget(button1); // 将按钮添加到布局中
layout1->addWidget(label1); // 将标签添加到布局中
toolBox.addItem(page1, "Tab 1"); // 将page1添加到ToolBox中,选项卡标题为"Tab 1"
// 创建第二个选项卡的内容
QWidget *page2 = new QWidget(); // 创建一个QWidget实例,作为第二个选项卡的内容容器
QVBoxLayout *layout2 = new QVBoxLayout(page2); // 创建一个垂直布局管理器,并将其设置为page2的布局
QLineEdit *lineEdit2 = new QLineEdit(); // 创建一个单行输入框
QLabel *label2 = new QLabel("Label 2"); // 创建一个标签,显示文本为"Label 2"
layout2->addWidget(lineEdit2); // 将输入框添加到布局中
layout2->addWidget(label2); // 将标签添加到布局中
toolBox.addItem(page2, "Tab 2"); // 将page2添加到ToolBox中,选项卡标题为"Tab 2"
// 创建第三个选项卡的内容
QWidget *page3 = new QWidget(); // 创建一个QWidget实例,作为第三个选项卡的内容容器
QVBoxLayout *layout3 = new QVBoxLayout(page3); // 创建一个垂直布局管理器,并将其设置为page3的布局
QPushButton *button3 = new QPushButton("Button 3"); // 创建一个按钮,显示文本为"Button 3"
QLineEdit *lineEdit3 = new QLineEdit(); // 创建一个单行输入框
layout3->addWidget(button3); // 将按钮添加到布局中
layout3->addWidget(lineEdit3); // 将输入框添加到布局中
toolBox.addItem(page3, "Tab 3"); // 将page3添加到ToolBox中,选项卡标题为"Tab 3"
// 显示ToolBox
toolBox.show();
// 进入Qt应用程序的主事件循环,等待用户交互
return app.exec();
}
Tab Widget:标签小部件。
头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTabWidget>
#include <QPushButton>
#include <QLabel>
#include <QVBoxLayout>
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QTabWidget *tabWidgetUI;
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setWindowTitle("选项卡小部件");
this->setGeometry(0, 0, 800, 600);
tabWidgetUI = new QTabWidget(this);//创建选项卡小部件
tabWidgetUI->setGeometry(10, 10, 400, 300);//设置选项卡小部件的位置和大小
tabWidgetUI->show();//显示选项卡小部件
// 创建第一个选项卡
QWidget *page1 = new QWidget();
QVBoxLayout *layout1 = new QVBoxLayout(page1);
QPushButton *button1 = new QPushButton("Button 1");
QLabel *label1 = new QLabel("Label 1");
layout1->addWidget(button1);
layout1->addWidget(label1);
tabWidgetUI->addTab(page1, "Tab 1");
// 创建第二个选项卡
QWidget *page2 = new QWidget();
QVBoxLayout *layout2 = new QVBoxLayout(page2);
QLabel *label2 = new QLabel("Label 2");
layout2->addWidget(label2);
tabWidgetUI->addTab(page2, "Tab 2");
// 创建第三个选项卡
QWidget *page3 = new QWidget();
QVBoxLayout *layout3 = new QVBoxLayout(page3);
QPushButton *button3 = new QPushButton("Button 3");
layout3->addWidget(button3);
tabWidgetUI->addTab(page3, "Tab 3");
}
MainWindow::~MainWindow()
{
delete ui;
}
Stacked Widget:堆叠部件。
Frame:框架。
头文件:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
#include "widget.h"
#include "./ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
this->setStyleSheet("background-color: white; ");
this->setWindowTitle("My Widget");
//设置背景颜色
ui->frame_1->setStyleSheet("background-color: yellow;");
ui->frame_2->setStyleSheet("background-color: green;");
ui->frame_1->setLineWidth(3);//设置边框宽度
ui->frame_1->setFrameShape(QFrame::Box);//设置边框样式
ui->frame_2->setFrameShape(QFrame::Panel);//设置边框样式
}
Widget::~Widget()
{
delete ui;
}
Dock Widget:停靠窗体部件。
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDockWidget>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QDockWidget *dockWidget = new QDockWidget("Dock Widget", this);//创建Dock Widget
dockWidget->setMaximumSize(300, 200);//设置最大尺寸
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);//设置允许停靠的区域
}
MainWindow::~MainWindow()
{
delete ui;
}
Item View控件(Item Views)
List View:清单视图。
Tree View:树视图。
Table View:表视图。
Column View:列视图。
Undo View:撤销视图。
List View:清单视图。
头文件:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QListView>
#include <QStringListModel>
#include <QMessageBox>
QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
QListView *listView1;
private slots:
void onclicked(const QModelIndex &index);
};
#endif // WIDGET_H
#include "widget.h"
#include "./ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
this->resize(400, 300);
//创建listview
listView1=new QListView(this);
listView1->setGeometry(0,0,200,200);
//创建字符串列表
QStringList qlist;
qlist.append("item1");
qlist.append("item2");
qlist.append("item3");
//创建清单模型
QStringListModel *model=new QStringListModel(qlist);
///将模型添加到listview中
listView1->setModel(model);
//设置点击事件
connect(listView1,SIGNAL(clicked(QModelIndex)),this,SLOT(onclicked(QModelIndex)));
}
Widget::~Widget()
{
delete ui;
}
void Widget::onclicked(const QModelIndex &index){
QMessageBox::information(this,"提示","你点击了"+index.data().toString());
}
Tree View:树视图。
头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QStandardItemModel>//标准项目型号
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
//初始化树控件视图
void initTreeView();
QStandardItemModel *model;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
initTreeView();
}
MainWindow::~MainWindow()
{
delete ui;
}
//初始化树形控件
void MainWindow::initTreeView(){
//构造模型
model=new QStandardItemModel(ui->treeView);
model->setHorizontalHeaderLabels(QStringList()<<"名称"<<"大小"<<"类型");
//添加节点
QList<QStandardItem*> root;
QStandardItem *item1=new QStandardItem("节点");
QStandardItem *item2= new QStandardItem("100M");
root.append(item1);
root.append(item2);
model->appendRow(root);
//设置节点的子节点
QList<QStandardItem*> root1;
QStandardItem *item3=new QStandardItem("子节点");
//QStandardItem *item4= new QStandardItem("50M");
root1.append(item3);
//root1.append(item4);
item1->appendRow(root1);
//设置节点的子节点的z子节点
QList<QStandardItem*> root2;
QStandardItem *item5=new QStandardItem("子子节点");
//QStandardItem *item6= new QStandardItem("50M");
root2.append(item5);
// root2.append(item6);
item3->appendRow(root2);
ui->treeView->setModel(model);
}
Table View:表视图。
头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
void InitTableViews();
};
#endif // MAINWINDOW_H
#include <QStandardItemModel>
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
InitTableViews();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::InitTableViews(){
//添加表头,准备数据模型
//创建一个数据模型,设置行数和列数
QStandardItemModel *model = new QStandardItemModel();
model->setHorizontalHeaderItem(0, new QStandardItem("姓名"));
model->setHorizontalHeaderItem(1, new QStandardItem("年龄"));
model->setHorizontalHeaderItem(2, new QStandardItem("性别"));
model->setHorizontalHeaderItem(3, new QStandardItem("电话"));
//添加数据
model->setItem(0, 0, new QStandardItem("张三"));
model->setItem(0, 1, new QStandardItem("25"));
model->setItem(0, 2, new QStandardItem("男"));
model->setItem(0, 3, new QStandardItem("13812345678"));
model->setItem(1, 0, new QStandardItem("李四"));
model->setItem(1, 1, new QStandardItem("26"));
model->setItem(1, 2, new QStandardItem("女"));
model->setItem(1, 3, new QStandardItem("13812345679"));
//设置模型到表格视图
ui->tableView->setModel(model);
//设置大小
ui->tableView->resizeColumnsToContents();//根据内容调整列的大小
ui->tableView->resizeRowsToContents();//根据内容调整行的大小
//设置禁止编辑
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//无编辑触发器
//排序
ui->tableView->setSortingEnabled(true);//设置排序已启用
}
Column View:列视图。
Undo View:撤销视图。
Input Widgets控件(Input Widgets)
List Widget:清单控件
Tree Widget:树控件
Table Widget:表控件
List Widget:清单控件。
头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//注释: 这里是添加一个新的 QListWidgetItem 到 QListWidget 中
QListWidgetItem *item = new QListWidgetItem(ui->listWidget);
item->setText("New Item");
item->setTextAlignment(Qt::AlignCenter);
//注释: 这里是添加多个 QListWidgetItem 到 QListWidget 中
QStringList list;
list << "Item 1" << "Item 2" << "Item 3";
ui->listWidget->addItems(list);
}
MainWindow::~MainWindow()
{
delete ui;
}
Tree Widget:树控件。
头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTreeWidget>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//测试TreeWidget
//去掉头部的标题
ui->treeWidget->header()->close();
QTreeWidgetItem *item1 = new QTreeWidgetItem(ui->treeWidget);
item1->setText(0, "Item 1");
item1->setCheckState(0, Qt::Checked);
QTreeWidgetItem *item2 = new QTreeWidgetItem(ui->treeWidget);
item2->setText(0, "Item 2");
item2->setCheckState(0, Qt::Checked);
QTreeWidgetItem *item3 = new QTreeWidgetItem(item2);
item3->setText(0, "Item 3");
item3->setCheckState(0, Qt::Checked);
QTreeWidgetItem *item4 = new QTreeWidgetItem(item2);
item4->setText(0, "Item 4");
item4->setCheckState(0, Qt::Checked);
QTreeWidgetItem *item5 = new QTreeWidgetItem(item4);
item5->setText(0, "Item 5");
item5->setCheckState(0, Qt::Checked);
QTreeWidgetItem *item6 = new QTreeWidgetItem(item4);
item6->setText(0, "Item 6");
item6->setCheckState(0, Qt::Checked);
QTreeWidgetItem *item7 = new QTreeWidgetItem(item6);
item7->setText(0, "Item 7");
item7->setCheckState(0, Qt::Checked);
//设置默认展开
ui->treeWidget->expandAll();
}
MainWindow::~MainWindow()
{
delete ui;
}
Table Widget:表控件。
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//设置表格的列数和行数
ui->tableWidget->setColumnCount(3);//设置列数
ui->tableWidget->setRowCount(10);//设置行数
//设置表格的标题
ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性别"<<"年龄");
//设置单元格的值
ui->tableWidget->setItem(0,0,new QTableWidgetItem("张三"));
ui->tableWidget->setItem(0,1,new QTableWidgetItem("男"));
ui->tableWidget->setItem(0,2,new QTableWidgetItem("25"));
ui->tableWidget->setItem(1,0,new QTableWidgetItem("李四"));
ui->tableWidget->setItem(1,1,new QTableWidgetItem("女"));
ui->tableWidget->setItem(1,2,new QTableWidgetItem("30"));
ui->tableWidget->setItem(2,0,new QTableWidgetItem("王五"));
ui->tableWidget->setItem(2,1,new QTableWidgetItem("男"));
ui->tableWidget->setItem(2,2,new QTableWidgetItem("20"));
//循环设置数据
for(int i=3;i<6;i++) {
for (int j = 0; j < 3; j++) {
ui->tableWidget->setItem(i, j, new QTableWidgetItem(QString("第%1行第%2列").arg(i).arg(j)));
}
}
}
MainWindow::~MainWindow()
{
delete ui;
}
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:快捷键编辑框
Combo Box:组合框
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QComboBox>
# include <QMessageBox>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QComboBox *comboBox; //定义一个QComboBox对象
Ui::MainWindow *ui;
private slots:
void combBoxChanged(int); //槽函数
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setWindowTitle("My App");
this->setGeometry(0,0,400, 300);
//测试Combo Box
QComboBox *comboBox = new QComboBox(this);//创建ComboBox对象
comboBox->setGeometry(100, 100, 100, 30);//设置位置和大小
comboBox->addItem("Item1");//添加选项
comboBox->addItem("Item2");
comboBox->addItem("Item3");
comboBox->addItem("Item4");
comboBox->addItem("Item5");
//测试信号与槽
connect(comboBox, SIGNAL(currentIndexChanged(int)),
this, SLOT(combBoxChanged(int)));//连接信号与槽
}
void MainWindow::combBoxChanged(int index){
qDebug() << "选择了第" << index << "项";
}//槽函数
MainWindow::~MainWindow()
{
delete ui;
}
Font Combo Box:字体组合框
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QFontComboBox>
#include <QLabel>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QFontComboBox *fontComboBox;
QLabel *label;
Ui::MainWindow *ui;
private slots:
void FontFunc(QFont);
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
fontComboBox = new QFontComboBox(this);
label=new QLabel(this);
fontComboBox->setGeometry(10,10,100,30);
label->setGeometry(10,50,200,30);
connect(fontComboBox, SIGNAL(currentFontChanged(QFont)),
this, SLOT(FontFunc(QFont)));
}
void MainWindow::FontFunc(QFont font){
label->setFont(font);
QString text="Hello World";
label->setText(text);
}
MainWindow::~MainWindow()
{
delete ui;
}
Line Edit:行编辑框
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QLineEdit>
#include <QPushButton>
#include <QLabel>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QLineEdit *lineEdit;
QPushButton *pushButton;
QLabel *label;
Ui::MainWindow *ui;
private slots:
void on_pushButton_clicked();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
lineEdit = new QLineEdit(this);
lineEdit->setGeometry(QRect(10, 10, 100, 30));
pushButton = new QPushButton(this);
pushButton->setGeometry(QRect(10, 50, 100, 30));
pushButton->setText("Click me");
connect(pushButton, SIGNAL(clicked()),
this, SLOT(on_pushButton_clicked()));
label = new QLabel(this);
label->setGeometry(QRect(10, 90, 100, 30));
label->setText("Hello World!");
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked(){
QString text = "输入:"+lineEdit->text();
label->setText(text);
}
Text Edit:文本编辑框
Plain Text Edit:纯文本编辑框
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QPlainTextEdit> //功能:显示文本框
#include <QRadioButton> //功能:单选按钮
#include <QDir>//功能:文件目录
#include <QTextStream>//功能:文本流
#include <QCoreApplication>//功能:应用
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QPlainTextEdit *textEdit;
QRadioButton *radioButton;
Ui::MainWindow *ui;
private slots:
void QRadioButtonClicked();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
textEdit=new QPlainTextEdit(this);//创建文本编辑器
textEdit->setPlainText("Hello World!");//设置文本编辑器初始内容
textEdit->setGeometry(10,10,300,300);//设置文本编辑器位置和大小
radioButton=new QRadioButton(this);//创建单选按钮
radioButton->setText("只读");//设置单选按钮文本
radioButton->setGeometry(350,0,100,30);//设置单选按钮位置和大小
//设置工作目录为可执行程序的目录
QDir::setCurrent(QCoreApplication::applicationDirPath());
QFile file("cmake_install.cmake");//读取文件
file.open(QIODevice::ReadOnly | QIODevice::Text);//打开文件
//加载文件内容到文本编辑器
QTextStream in(&file);
textEdit->setPlainText(in.readAll());
//连接单选按钮点击信号与槽函数
connect(radioButton,SIGNAL(clicked()),
this,SLOT(QRadioButtonClicked()));
}
void MainWindow::QRadioButtonClicked(){
//设置文本编辑器是否只读
if(radioButton->isChecked()){
textEdit->setReadOnly(true);
}else{
textEdit->setReadOnly(false);
}
}
MainWindow::~MainWindow()
{
delete ui;
}
Spin Box:数值框
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QSpinBox>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QSpinBox *spinBox;
Ui::MainWindow *ui;
private slots:
void on_spinBox_valueChanged(int value);
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
spinBox = new QSpinBox(this);
spinBox->setGeometry(100, 100, 200, 30);
//设置范围
spinBox->setRange(0, 100);
//设置步长
spinBox->setSingleStep(5);
//设置初始值
spinBox->setValue(100);
//设置标签
spinBox->setPrefix("透明度:");//设置前缀
spinBox->setSuffix(" %");//设置后缀
connect(spinBox, SIGNAL(valueChanged(int)),
this, SLOT(on_spinBox_valueChanged(int)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_spinBox_valueChanged(int value){
//根据值修改窗口背景透明度
this->setWindowOpacity((double)value/100.0);
}
Double Spin Box:双精度数值框
Date Edit:日期编辑框
Time Edit:时间编辑框
DateTime Edit:日期时间编辑框
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
//时间相关
#include <QDateTime>
#include <QTimeEdit>
#include <QDateTimeEdit>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QDateTimeEdit *dateTimeEdit1;
QTimeEdit *timeEdit1;
QDateEdit *dateEdit1;
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//初始化一个QDateTimeEdit控件参数是当前时间
dateTimeEdit1= new QDateTimeEdit(QDateTime::currentDateTime(), this);
dateTimeEdit1->setGeometry(10, 10, 300, 30);
timeEdit1= new QTimeEdit(QTime::currentTime(), this);
timeEdit1->setGeometry(10, 50, 300, 30);
dateEdit1= new QDateEdit(QDate::currentDate(), this);
dateEdit1->setGeometry(10, 90, 300, 30);
//设置控件的显示格式
dateTimeEdit1->setDisplayFormat("yyyy-MM-dd HH:mm:ss");
timeEdit1->setDisplayFormat("HH:mm:ss");
dateEdit1->setDisplayFormat("yyyy-MM-dd");
}
MainWindow::~MainWindow()
{
delete ui;
}
Dial:拨号盘
Horizonal Slider Bar: 水平滑动条
Vertical Slider Bar: 垂直滑动条
Horizontal Slider: 水平滑块
Vertical Slider: 垂直滑块
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QScrollBar> //包含滚动条头文件
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QScrollBar *verticalScrollBar;//垂直滚动条
QScrollBar *horizontalScrollBar;//水平滚动条
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include <QStyleOptionSlider>
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
verticalScrollBar=new QScrollBar(Qt::Vertical,this);//创建垂直滚动条
verticalScrollBar->setGeometry(10,10,10,1000);
verticalScrollBar->setRange(0,100);//设置滚动条范围
verticalScrollBar->setValue(0);//设置滚动条初始值
horizontalScrollBar=new QScrollBar(Qt::Horizontal,this);//创建水平滚动条
horizontalScrollBar->setGeometry(10,10,1000,10);
horizontalScrollBar->setRange(0,100);//设置滚动条范围
horizontalScrollBar->setValue(0);//设置滚动条初始值
}
MainWindow::~MainWindow()
{
delete ui;
}
File Dialog:文件对话框
Key Sequence Edit:快捷键编辑框
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QKeySequenceEdit>//功能:可编辑快捷键
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QKeySequenceEdit *keySequenceEdit;
Ui::MainWindow *ui;
private slots:
void keySequenceEditChanged(const QKeySequence & keySequence);
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
keySequenceEdit=new QKeySequenceEdit(this);
keySequenceEdit->setGeometry(10,10,200,100);
connect(keySequenceEdit,SIGNAL(keySequenceChanged(const QKeySequence &)),
this,SLOT(keySequenceEditChanged(const QKeySequence &)));
}
void MainWindow::keySequenceEditChanged(const QKeySequence &key){
if(!key.isEmpty()){//如果输入的快捷键为空,则不做任何处理
if(key==QKeySequence(tr("Ctrl+Shift+A"))){ //tr()函数:用于翻译字符串 QKeySequence()函数:用于创建QKeySequence对象
this->close();
} else{
qDebug()<<key.toString();
}
}
}
MainWindow::~MainWindow()
{
delete ui;
}
Display Widgets: 显示控件
Label:标签
Text Browser:文本浏览器
Graphics View:图形视图
Calendar Widget:日历控件
LCD Number:LCD数字
Progress Bar:进度条
Status Bar:状态栏
Horizontal Line : 水平线
Vertical Line : 垂直线
OpenGl Widget : OpenGL控件
QQuickWidget : Qt Quick控件
Label:标签
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QMessageBox>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
private slots:
void textlablefunc();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
textlablefunc();
}
void MainWindow::textlablefunc(){
QString fname = "A:\\QT_WORK\\q42\\image\\1.png";
//创建QImage对象 功能是加载图片
QImage *image = new QImage();
//判断图片是否加载成功
if(!image->load(fname)){
qDebug() << "Failed to load image";
QMessageBox::information(this, "Error", "Failed to load image");
delete image;
return;
}
//设置label的大小是图片的大小
//ui->label->setFixedSize(image->width(), image->height());
//图片适配label大小
ui->label->setScaledContents(true);
ui->label->setPixmap(QPixmap::fromImage(*image));
}
MainWindow::~MainWindow()
{
delete ui;
}
Text Browser:文本浏览器
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QFile>
#include <QMessageBox>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
private slots:
void textbrowserFunc();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
textbrowserFunc();
}
void MainWindow::textbrowserFunc(){
//存储文件内容
QString strData;
QFile file("A:\\QT_WORK\\q43\\text.txt");
//打开文件
if(file.open(QIODevice::ReadOnly | QIODevice::Text)){
QMessageBox::information(this, "提示", "文件打开成功!", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
}else{
QMessageBox::warning(this, "警告", "文件打开失败!", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
return;
}
//读取文件内容 atEnd()判断文件是否读取完毕
while (!file.atEnd()){
//读取一行内容到二进制数组中
QByteArray line= file.readLine();
QString strs(line);//将二进制数组转换为字符串
strData.append(strs);
}
//显示文件内容
ui->textBrowser->setText(strData);
}
MainWindow::~MainWindow()
{
delete ui;
}
Graphics View:图形视图
Calendar Widget:日历控件
LCD Number:LCD数字
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QLCDNumber>
#include <QTimer>
#include <QPushButton>
#include <QVBoxLayout>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QLCDNumber *lcdNumber;
QTimer *timer;
QPushButton *startButton;
QPushButton *stopButton;
QPushButton *cleanButton;
int seconds;
private slots:
void updateTimer();
void startTimer();
void stopTimer();
void cleanTimer();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent),seconds(0)
{
// 创建QLCDNumber控件
lcdNumber = new QLCDNumber(this);
lcdNumber->setDigitCount(5);//设置显示的数字位数
lcdNumber->setSegmentStyle(QLCDNumber::Flat); //设置显示样式为平面样式
lcdNumber->display("00000");//设置初始显示值
// 创建开始和停止按钮
startButton = new QPushButton("开始", this);
stopButton = new QPushButton("停止", this);
cleanButton = new QPushButton("重置", this);
// 连接按钮的点击信号到槽函数
connect(startButton, &QPushButton::clicked, this, &MainWindow::startTimer);
connect(stopButton, &QPushButton::clicked, this, &MainWindow::stopTimer);
connect(cleanButton, &QPushButton::clicked, this, &MainWindow::cleanTimer);
// 创建一个定时器
timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &MainWindow::updateTimer);
// 设置布局
QVBoxLayout *mainLayout = new QVBoxLayout; // 创建一个垂直布局
mainLayout->addWidget(lcdNumber); //将QLCDNumber控件添加到布局中
QHBoxLayout *buttonLayout = new QHBoxLayout; // 创建一个水平布局
buttonLayout->addWidget(startButton);
buttonLayout->addWidget(stopButton);
buttonLayout->addWidget(cleanButton);
mainLayout->addLayout(buttonLayout); // 将按钮布局添加到布局中
// 创建一个中心窗口并设置布局
QWidget *centralWidget = new QWidget(this);
centralWidget->setLayout(mainLayout);
this->setCentralWidget(centralWidget);//将中心窗口设置为主窗口
}
void MainWindow::updateTimer(){
seconds++;
lcdNumber->display(QString::number(seconds));
}
void MainWindow::startTimer(){
//seconds = 0;
lcdNumber->display(++seconds);
timer->start(1000); // 每秒更新一次
}
void MainWindow::stopTimer(){
timer->stop();
}
void MainWindow::cleanTimer(){
seconds = 0;
lcdNumber->display("00000");
}
MainWindow::~MainWindow()
{
}
Progress Bar:进度条
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QPushButton>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//进度条初始化
ui->progressBar->setValue(0);
//设置进度条范围
ui->progressBar->setRange(0, 100000);
ui->pushButton->setText("开始");
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
for(int i=0;i<=100000;i++){
for(int j=0;j<1;j++){
ui->progressBar->setValue(i);
}
}
}
Status Bar:状态栏
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
void setupStatusBar();
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include <QPushButton>
#include <QLabel>
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setWindowTitle("状态栏示例");
QPushButton *butt=new QPushButton("按钮",this);
//设置按钮大小
butt->setFixedSize(100,30);
//设置按钮的位置
this->setCentralWidget(butt);//设置中心窗口
connect(butt, &QPushButton::clicked,
this,
[this]() {
this->statusBar()->showMessage("按钮被点击了", 3000); // 显示消息3秒
});
setupStatusBar();//初始化状态栏
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::setupStatusBar(){
QStatusBar *statusBar = new QStatusBar(this);//创建状态栏
this ->setStatusBar(statusBar);//设置状态栏
// 在状态栏中添加一个永久部件
QLabel *permanentLabel = new QLabel("就绪", this);
statusBar->addPermanentWidget(permanentLabel);
// 初始显示消息
statusBar->showMessage("欢迎使用状态栏", 5000); // 显示消息5秒
}