当前位置:   article > 正文

lv21 QT入门与基础控件 1

lv21 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

  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QWidget>
  4. #include <QPushButton>
  5. #include <QLineEdit>
  6. class Widget : public QWidget
  7. {
  8. Q_OBJECT
  9. public:
  10. Widget(QWidget *parent = 0);
  11. ~Widget();
  12. public slots:
  13. void movestr()
  14. {
  15. //一个文本输入框中的内容复制到另一个文本输入框中
  16. QString tem = le->text();
  17. le1->setText( tem );
  18. }
  19. private:
  20. QPushButton *pb;
  21. QLineEdit *le, *le1;
  22. };
  23. #endif // WIDGET_H

widget.cpp 

  1. #include "widget.h"
  2. #include <QVBoxLayout>
  3. Widget::Widget(QWidget *parent)
  4. : QWidget(parent)
  5. {
  6. pb = new QPushButton("OK",this); //按钮
  7. le = new QLineEdit(this); //行文本输入
  8. le1 = new QLineEdit(this);
  9. // pb->setGeometry(0, 100, 50, 50); //x,y原点 a,b大小
  10. QVBoxLayout *vbox = new QVBoxLayout; //垂直布局管理器
  11. vbox->addWidget(le1); //添加控件
  12. vbox->addWidget(le);
  13. vbox->addWidget(pb);
  14. this->setLayout(vbox); //设置所使用的布局管理器
  15. //信号与槽机制
  16. //当点击了按钮,那么行文本输入清除
  17. // connect(pb, SIGNAL(clicked(bool)), le, SLOT(clear()));
  18. /*将按钮的clicked(bool)信号与当前对象的movestr()槽函数连接起来。
  19. 当按钮被点击时,会触发movestr()槽函数的执行。*/
  20. connect(pb, SIGNAL(clicked(bool)), this, SLOT(movestr()));
  21. }
  22. Widget::~Widget()
  23. {
  24. }

3.2 组件综合示例

学会看帮助文档

 布局控件示例

加些属性

widget.h

  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QWidget>
  4. #include <QLineEdit>
  5. #include <QTextEdit>
  6. #include <QComboBox>
  7. #include <QTimeEdit>
  8. #include <QDial>
  9. #include <QSlider>
  10. #include <QScrollBar>
  11. #include <QLabel>
  12. #include <QLCDNumber>
  13. #include <QProgressBar>
  14. class Widget : public QWidget
  15. {
  16. Q_OBJECT
  17. public:
  18. Widget(QWidget *parent = 0);
  19. ~Widget();
  20. private:
  21. //input
  22. QLineEdit *le;
  23. QTextEdit *te;
  24. QComboBox *cb;
  25. QTimeEdit *timee;
  26. QDial *dl;
  27. QSlider *sd;
  28. QScrollBar *sb;
  29. //output
  30. QLabel *lbtxt, *lbpic;
  31. QLCDNumber *lcd;
  32. QProgressBar *pgb;
  33. };
  34. #endif // WIDGET_H

widget.cpp

  1. #include "widget.h"
  2. #include <QVBoxLayout>
  3. #include <QHBoxLayout>
  4. Widget::Widget(QWidget *parent)
  5. : QWidget(parent)
  6. {
  7. //input
  8. le = new QLineEdit(this); //如果后续用布局管理器,这里this可以不加
  9. te = new QTextEdit;
  10. cb = new QComboBox;
  11. cb->addItem("read");
  12. cb->addItem("write");
  13. timee = new QTimeEdit;
  14. dl = new QDial;
  15. sd = new QSlider;
  16. sd->setOrientation(Qt::Horizontal);
  17. sb = new QScrollBar;
  18. sd->setOrientation(Qt::Horizontal);
  19. QVBoxLayout *vbox = new QVBoxLayout; //垂直布局
  20. vbox->addWidget(le);
  21. vbox->addWidget(te);
  22. vbox->addWidget(cb);
  23. vbox->addWidget(timee);
  24. vbox->addWidget(dl);
  25. vbox->addWidget(sd);
  26. vbox->addWidget(sb);
  27. //output
  28. lbtxt = new QLabel("hello");
  29. lbpic = new QLabel;
  30. QPixmap pix("1.jpg");
  31. lbpic->setFixedSize(100,100);
  32. lbpic->setScaledContents(true);
  33. lbpic->setPixmap(pix);
  34. lcd = new QLCDNumber;
  35. pgb = new QProgressBar;
  36. QVBoxLayout *vbox1 = new QVBoxLayout; //垂直布局
  37. vbox1->addWidget(lbtxt);
  38. vbox1->addWidget(lbpic);
  39. vbox1->addWidget(lcd);
  40. vbox1->addWidget(pgb);
  41. QHBoxLayout *hbox = new QHBoxLayout; //水平布局包含两边垂直布局
  42. hbox->addLayout(vbox);
  43. hbox->addLayout(vbox1);
  44. this->setLayout(hbox);
  45. //connect
  46. connect(dl,SIGNAL(valueChanged(int)), lcd, SLOT(display(int)));
  47. connect(dl,SIGNAL(valueChanged(int)), pgb, SLOT(setValue(int)));
  48. connect(dl,SIGNAL(valueChanged(int)), sd, SLOT(setValue(int)));
  49. }
  50. Widget::~Widget()
  51. {
  52. }

练习

QT是什么?QT的信号与槽机制是用来做什么的? 

QT是一个跨平台的C++应用程序开发框架,提供了丰富的工具和库,用于简化图形用户界面(GUI)程序的开发。
QT的信号与槽机制是一种在QT框架中用来处理事件和通信的机制。信号与槽机制允许对象之间进行异步通信,当一个对象的状态发生变化时,它可以发送一个信号,其他对象可以连接到这个信号并在接收到信号时执行相应的槽函数。这种机制使得对象之间的耦合度较低,易于实现模块化和复用。因此,信号与槽机制在QT框架中被广泛用于处理事件、消息传递和数据更新等各种情况。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/164341
推荐阅读
相关标签
  

闽ICP备14008679号