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_OBJECTpublic: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_OBJECTpublic:Widget(QWidget *parent = 0);~Widget();private://inputQLineEdit *le; QTextEdit *te;QComboBox *cb;QTimeEdit *timee;QDial *dl;QSlider *sd;QScrollBar *sb;//outputQLabel *lbtxt, *lbpic;QLCDNumber *lcd;QProgressBar *pgb;};#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include <QVBoxLayout>
#include <QHBoxLayout>Widget::Widget(QWidget *parent): QWidget(parent)
{//inputle = 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);//outputlbtxt = 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);//connectconnect(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框架中被广泛用于处理事件、消息传递和数据更新等各种情况。