1 QT简介
QT是挪威Trolltech开发的多平台C++图形用户界面应用程序框架
典型应用
2 工程搭建
2.1 新建ui工程
不要写中文路径
2.1 不勾选UI(主讲)
3 QT信号与槽机制
语法:Connect(A, SIGNLA(aaa()), B, SLOT(bbb()));
3.1 示例一个文本输入框中的内容复制到另一个文本输入框中
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPushButton>
#include <QLineEdit>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
public slots:
void movestr()
{
//一个文本输入框中的内容复制到另一个文本输入框中
QString tem = le->text();
le1->setText( tem );
}
private:
QPushButton *pb;
QLineEdit *le, *le1;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include <QVBoxLayout>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
pb = new QPushButton("OK",this); //按钮
le = new QLineEdit(this); //行文本输入
le1 = new QLineEdit(this);
// pb->setGeometry(0, 100, 50, 50); //x,y原点 a,b大小
QVBoxLayout *vbox = new QVBoxLayout; //垂直布局管理器
vbox->addWidget(le1); //添加控件
vbox->addWidget(le);
vbox->addWidget(pb);
this->setLayout(vbox); //设置所使用的布局管理器
//信号与槽机制
//当点击了按钮,那么行文本输入清除
// connect(pb, SIGNAL(clicked(bool)), le, SLOT(clear()));
/*将按钮的clicked(bool)信号与当前对象的movestr()槽函数连接起来。
当按钮被点击时,会触发movestr()槽函数的执行。*/
connect(pb, SIGNAL(clicked(bool)), this, SLOT(movestr()));
}
Widget::~Widget()
{
}
3.2 组件综合示例
学会看帮助文档
布局控件示例
加些属性
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QLineEdit>
#include <QTextEdit>
#include <QComboBox>
#include <QTimeEdit>
#include <QDial>
#include <QSlider>
#include <QScrollBar>
#include <QLabel>
#include <QLCDNumber>
#include <QProgressBar>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
private:
//input
QLineEdit *le;
QTextEdit *te;
QComboBox *cb;
QTimeEdit *timee;
QDial *dl;
QSlider *sd;
QScrollBar *sb;
//output
QLabel *lbtxt, *lbpic;
QLCDNumber *lcd;
QProgressBar *pgb;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include <QVBoxLayout>
#include <QHBoxLayout>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
//input
le = new QLineEdit(this); //如果后续用布局管理器,这里this可以不加
te = new QTextEdit;
cb = new QComboBox;
cb->addItem("read");
cb->addItem("write");
timee = new QTimeEdit;
dl = new QDial;
sd = new QSlider;
sd->setOrientation(Qt::Horizontal);
sb = new QScrollBar;
sd->setOrientation(Qt::Horizontal);
QVBoxLayout *vbox = new QVBoxLayout; //垂直布局
vbox->addWidget(le);
vbox->addWidget(te);
vbox->addWidget(cb);
vbox->addWidget(timee);
vbox->addWidget(dl);
vbox->addWidget(sd);
vbox->addWidget(sb);
//output
lbtxt = new QLabel("hello");
lbpic = new QLabel;
QPixmap pix("1.jpg");
lbpic->setFixedSize(100,100);
lbpic->setScaledContents(true);
lbpic->setPixmap(pix);
lcd = new QLCDNumber;
pgb = new QProgressBar;
QVBoxLayout *vbox1 = new QVBoxLayout; //垂直布局
vbox1->addWidget(lbtxt);
vbox1->addWidget(lbpic);
vbox1->addWidget(lcd);
vbox1->addWidget(pgb);
QHBoxLayout *hbox = new QHBoxLayout; //水平布局包含两边垂直布局
hbox->addLayout(vbox);
hbox->addLayout(vbox1);
this->setLayout(hbox);
//connect
connect(dl,SIGNAL(valueChanged(int)), lcd, SLOT(display(int)));
connect(dl,SIGNAL(valueChanged(int)), pgb, SLOT(setValue(int)));
connect(dl,SIGNAL(valueChanged(int)), sd, SLOT(setValue(int)));
}
Widget::~Widget()
{
}
练习
QT是什么?QT的信号与槽机制是用来做什么的?
QT是一个跨平台的C++应用程序开发框架,提供了丰富的工具和库,用于简化图形用户界面(GUI)程序的开发。
QT的信号与槽机制是一种在QT框架中用来处理事件和通信的机制。信号与槽机制允许对象之间进行异步通信,当一个对象的状态发生变化时,它可以发送一个信号,其他对象可以连接到这个信号并在接收到信号时执行相应的槽函数。这种机制使得对象之间的耦合度较低,易于实现模块化和复用。因此,信号与槽机制在QT框架中被广泛用于处理事件、消息传递和数据更新等各种情况。