lv20 QT入门与基础控件 1

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框架中被广泛用于处理事件、消息传递和数据更新等各种情况。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

4IOT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值