在QT中有很多供我们使用的类,我在这里给大家列举了我们常用的类,一下讲解全部采用写代码的方式展示给大家,每个模块的效果图会放在代码之前,供大家参考选择
将位置固定在某一个位置
#include //按钮所需头文件
bt1 = new QPushButton("1", this);
bt2 = new QPushButton("2", this);
bt3 = new QPushButton("3", this);
//设置按钮的位置 x:起始位置的x值 y:起始位置的y值 w:宽 h:高
//bt1->setGeometry(int x,int y, int w, int h);
bt1->setGeometry(100, 100, 200, 20);
bt2->setGeometry(200, 200, 200, 20);
bt3->setGeometry(100,100,200,20);
bt3->move(20, 20); //移动到对应坐标位置
将三个按钮水平布局
#include //头文件
bt1 = new QPushButton("1", this);
bt2 = new QPushButton("2", this);
bt3 = new QPushButton("3", this);
//1. 水平
QHBoxLayout *hbox = new QHBoxLayout; //构造一个水平管理器
//将按钮按顺序加入水平管理器
hbox->addWidget(bt1);
hbox->addWidget(bt2);
hbox->addWidget(bt3);
this->setLayout(hbox); //将布局贴在当前界面上
将三个按钮垂直布局
#include
bt1 = new QPushButton("1", this);
bt2 = new QPushButton("2", this);
bt3 = new QPushButton("3", this);
//2. 垂直
QVBoxLayout *vbox = new QVBoxLayout; //构造一个水平管理器
//将按钮按顺序加入垂直管理器
vbox->addWidget(bt1);
vbox->addWidget(bt2);
vbox->addWidget(bt3);
this->setLayout(vbox); //将布局贴在当前界面上
类似二维数组,网格形状
#include
bt1 = new QPushButton("1", this);
bt2 = new QPushButton("2", this);
bt3 = new QPushButton("3", this);
bt4 = new QPushButton("4", this);
//3. 栅格
QGridLayout *gbox = new QGridLayout; //构造一个水平管理器
//将按钮按顺序加入垂直管理器
gbox->addWidget(bt1, 0, 0); // 0行0列
gbox->addWidget(bt2, 1, 1,3,2);
gbox->addWidget(bt3, 1, 2, 2, 1); //1行2列,占2行,占1列
gbox->addWidget(bt4,3,3);
bt3->setFixedHeight(50);
this->setLayout(gbox); //将布局贴在当前界面上
bt1 = new QPushButton("1", this);
bt2 = new QPushButton("2", this);
bt3 = new QPushButton("3", this);
bt4 = new QPushButton("4", this);
//4. 布局嵌套
QHBoxLayout *hbox = new QHBoxLayout; //3 4 水平布局
hbox->addWidget(bt3);
hbox->addStretch(); //加弹簧
hbox->addWidget(bt4);
QVBoxLayout *vbox = new QVBoxLayout; //1 2 (3 4) 垂直布局
vbox->addWidget(bt1);
vbox->addWidget(bt2);
vbox->addLayout(hbox);
setLayout(vbox);
#include //头文件
/*普通按钮*/
pb = new QPushButton("普通按钮");
pb->setText("你好"); //设置按钮文字
pb->setIconSize(QSize(100, 100)); //设置图标大小
pb->setIcon(QIcon(":/hello.jpg")); //设置图标
pb->setMinimumSize(100, 100); //设置最小大小
pb->setMaximumSize(200, 200); //设置最大大小
类似Qt Creator右下角的运行代码按钮
#include //头文件
/*工具按钮*/
tb = new QToolButton;
tb->setText("工具按钮");
tb->setIcon(QIcon(":/icon/播放.png")); //设置图标
只能选择其中一个选项
#include //头文件
/*单选按钮*/
rb = new QRadioButton("A");
rb1 = new QRadioButton("B");
可以同时选择多个选项
#include
/*复选按钮*/
cb = new QCheckBox("A");
cb1 = new QCheckBox("B");
cb2 = new QCheckBox("C");
按钮链接到其他软件
#include
/*命令按钮*/
cmdb = new QCommandLinkButton("启动计算器");
connect(cmdb, &QCommandLinkButton::clicked, [&](){
QProcess *p = new QProcess;
p->execute("calc");
});
#include //头文件
//文字标签
lb_text = new QLabel("我是一个文字标签");
lb_text->setAlignment(Qt::AlignCenter); //设置对齐方式
固定显示图片
#include //头文件
//图片
lb_pix = new QLabel;
lb_pix->setMaximumSize(100, 100); //设置最大大小
lb_pix->setScaledContents(true); //设置自动缩放显示
lb_pix->setPixmap(QPixmap("C:\\Users\\26640\\Pictures\\Saved Pictures\\hello.jpg"));
可以讲gif动图设置成动画标签,让label动起来
#include //头文件
#include
//动画
lb_gif = new QLabel;
lb_gif->setMaximumSize(200, 100);
lb_gif->setScaledContents(true); //设置自动缩放显示
QMovie *m = new QMovie("D:\\ikun.gif"); //读取动图,存放到一个电影类中
m->start(); //播放电影
lb_gif->setMovie(m); //标签设置该电影类
可以识别 html 语法
#include
/* 文本浏览器 */
tb = new QTextBrowser;
tb->setText("\
\
\
\
菜鸟教程(runoob.com) \
\
\
我的第一个标题
\
我的第一个段落。
\
\
");
类似下载进度条,如果设置定时器,可以实现让进度条每一秒加1
#include
#include
/* 进度条*/
pbr = new QProgressBar;
pbr->setRange(0, 100); //设置进度条范围
pbr->setValue(36);
QTimer *t = new QTimer;
connect(t, &QTimer::timeout, [&](){ //lambda表达式
static int x = 0;
pbr->setValue(x); //设置进度条数值Value
x++;
});
t->start(1000); //1000毫秒,一秒触发一次
#include
#include
/* 仿七段数码管 */
lcd = new QLCDNumber;
lcd->setMinimumHeight(100);
lcd->setDigitCount(20);
QTimer *t = new QTimer;
connect(t, &QTimer::timeout, [&](){ //lambda表达式
static int x = 0;
lcd->display(x); //设置数码管数值
x++;
});
t->start(1000); //1000毫秒,一秒触发一次
上面是一个七段数码管,实现点击日历中的日期,并在数码管中显示
#include
#include
/* 仿七段数码管 */
lcd = new QLCDNumber;
lcd->setMinimumHeight(100);
lcd->setDigitCount(20);
/* 日历窗口*/
cd = new QCalendarWidget;
connect(cd, &QCalendarWidget::clicked, [&](QDate d){
lcd->display(d.toString("yyyy-MM-dd"));
});
类似登录时输入账号,密码这类输入框
#include
/*行编辑框*/
lineedit = new QLineEdit;
lineedit->setPlaceholderText("密码"); //设置提示
lineedit->setEchoMode(QLineEdit::Password); //设置回显模式
#include
/* 文本编辑框 */
textedit = new QTextEdit;
textedit->setText(""); //设置文本框中的内容
textedit->toPlainText(); //获取文本框中的内容
下拉框可以选择其他一个,这里实现选择下拉框中的内容,追加显示到文本编辑框中
#include
#include
/* 文本编辑框 */
textedit = new QTextEdit;
textedit->setText(""); //设置文本框中的内容
textedit->toPlainText(); //获取文本框中的内容
/* 下拉框 */
combobox = new QComboBox;
combobox->addItem("成都");
combobox->addItem("北京");
combobox->addItem("上海");
connect(combobox, SIGNAL(activated(QString)), textedit, SLOT(append(QString)));
选择文本编辑框中的内容,再选择字体
#include
#include
/* 文本编辑框 */
textedit = new QTextEdit;
textedit->setText("哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈"); //设置文本框中的内容
textedit->toPlainText(); //获取文本框中的内容
/* 字体下拉框*/
fontcombobox = new QFontComboBox;
connect(fontcombobox, SIGNAL(currentFontChanged(QFont)), textedit, SLOT(setCurrentFont(QFont)));
将自旋框中的内容打印到文本编辑框中,可以上下实现增减
#include
#include
/* 文本编辑框 */
textedit = new QTextEdit;
textedit->setText(""); //设置文本框中的内容
textedit->toPlainText(); //获取文本框中的内容
/* 自旋框 */
spinbox = new QSpinBox;
connect(spinbox, SIGNAL(valueChanged(QString)), textedit, SLOT(append(QString)));
旋动旋钮,进度条随着旋钮变化
#include
#include
/* 进度条*/
pbr = new QProgressBar;
pbr->setRange(0, 100); //设置进度条范围
/* 旋钮 */
dial = new QDial;
connect(dial, SIGNAL(valueChanged(int)), pbr, SLOT(setValue(int)));
实现拖动滚动条,进度条也随之变化
#include
#include
/* 进度条*/
pbr = new QProgressBar;
pbr->setRange(0, 100); //设置进度条范围
/* 滚动条 */
scrollbar = new QScrollBar;
scrollbar->setOrientation(Qt::Horizontal); //放置方式 水平?垂直
connect(scrollbar, SIGNAL(valueChanged(int)), pbr, SLOT(setValue(int)));
拖动滑动杆,进度条随之变化
#include
#include
/* 进度条*/
pbr = new QProgressBar;
pbr->setRange(0, 100); //设置进度条范围
/* 滑动杆儿 */
slider = new QSlider;
slider->setOrientation(Qt::Horizontal); //放置方式 水平?垂直
connect(slider, SIGNAL(valueChanged(int)), pbr, SLOT(setValue(int)));