qt下载方法:https://www.yuque.com/uh1h8r/dqrma0/
目录
界面框架
种类
QWidget、QDialog、QMainWindow
特点:
1、QWidget
- QWidget是Qt中所有用户界面控件的基类。
- 它表示一个矩形的窗口区域,可以包含其他的子控件。
- 继承自QWidget的控件可以被用户交互,并且可以包含其他的子控件。
- QWidget可以用于创建应用程序的主窗口或者子窗口。
2、QDialog
- QDialog是QWidget的子类,用于创建对话框。
- 对话框是一种特殊类型的窗口,通常用于与用户进行交互,提供额外的选项或接收用户的输入。
- QDialog提供了一些常用的对话框样式,例如消息框、文件选择框、颜色选择框等。
- 对话框可以自定义,可以根据需要添加自己的控件和逻辑。
3、QMainWindow
- QMainWindow是用于创建应用程序的主窗口的类,通常用于创建具有复杂布局和多个功能区域的应用程序窗口。
- 与QWidget和QDialog不同,QMainWindow提供了一个主要的菜单栏、工具栏、状态栏和中央部件,使得创建复杂的多文档界面(MDI)应用程序更加方便。
- 它通常用于创建大型的桌面应用程序。
布局管理器
头文件:
#include <QVBoxLayout> //垂直
#include <QHBoxLayout> //水平
#include <QGridLayout> //网状
#include <QFormLayout> //表格
代码实现:
#if 0
/*垂直布局实现*/
QVBoxLayout *vbox = new QVBoxLayout;
vbox->addWidget(le);
vbox->addWidget(le1);
vbox->addWidget(pb);
this->setLayout(vbox);
#endif
#if 0
/*水平布局实现*/
QHBoxLayout *hbox = new QHBoxLayout;
hbox->addWidget(le);
hbox->addWidget(le1);
hbox->addWidget(pb);
this->setLayout(hbox);
#endif
#if 0
/*网状布局实现*/
QGridLayout *gbox = new QGridLayout;
gbox->addWidget(le, 0, 0);
gbox->addWidget(le1, 1, 1);
gbox->addWidget(pb, 2, 2);
this->setLayout(gbox);
#endif
#if 1
/*表格布局实现*/
QFormLayout *fbox = new QFormLayout;
fbox->addRow("user", le);
fbox->addRow("pawd", le1);
fbox->addRow("", pb);
this->setLayout(fbox);
#endif
输入输出控件
输出控件:
输入控件 :
头文件:
//输入
#include <QLineEdit> //用于单行文本输入
#include <QTextEdit> //多行输入
#include <QComboBox> //选择一个选项的下拉框
#include <QTimeEdit> //编辑时间
#include <QDial> //用于选择一个范围内的数值,类似于旋转拨盘
#include <QSlider> //选择一个范围内的数值,类似于滑块
#include <QScrollBar> //用于滚动一个可滚动窗口或者试图
//输出
#include <QLabel> //用于显示文本或图像
#include <QLCDNumber> //用于显示数字,类似于数码管显示屏
#include <QProgressBar>//用于展示任务的进度,如文件下载或操作的完成情况
代码实现:
//input
le = new QLineEdit;
te = new QTextEdit;
cd = new QComboBox;
cd->addItem("read");
cd->addItem("write");
dl = new QDial;
sd = new QSlider;
sd->setOrientation(Qt::Horizontal);
sb = new QScrollBar;
sb->setOrientation(Qt::Horizontal);
timee = new QTimeEdit;
QVBoxLayout *vbox = new QVBoxLayout;
vbox->addWidget(le);
vbox->addWidget(te);
vbox->addWidget(cd);
vbox->addWidget(timee);
vbox->addWidget(dl);
vbox->addWidget(sd);
vbox->addWidget(sb);
//output
lb = new QLabel("hello");
lb1 = new QLabel;
QPixmap pix("1.png");
lb1->setFixedSize(100, 100);
lb1->setScaledContents(true);
lb1->setPixmap(pix);
lcd = new QLCDNumber;
pgd = new QProgressBar;
QVBoxLayout *vbox1 = new QVBoxLayout;
vbox1->addWidget(lb);
vbox1->addWidget(lb1);
vbox1->addWidget(lcd);
vbox1->addWidget(pgd);
QHBoxLayout *hbox = new QHBoxLayout;
hbox->addLayout(vbox);
hbox->addLayout(vbox1);
this->setLayout(hbox);
connect(dl, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)));
connect(dl, SIGNAL(valueChanged(int)), pgd, SLOT(setValue(int)));