• QT使用


    part 1:工程创建

    纯c++项目:New Project--非qt项目--纯c++项目

    桌面应用程序:Application--QT Widget Application 在后面选择的时候类信息选择QWidget 这个比较简单适合入门选择

     

    part 2:基础小项目:加减

    选择widget.ui进入主窗口设置界面,如要设置对button的相应,右键button按钮,选择转到漕,会自动生成一个事件函数,在里面可进行处理

    其他信息不用修改,只要在时间响应里添加函数即可,代码功能实现两个数的加法

     1 #include "widget.h"
     2 #include "ui_widget.h"
     3 
     4 Widget::Widget(QWidget *parent) :
     5     QWidget(parent),
     6     ui(new Ui::Widget)
     7 {
     8     ui->setupUi(this);
     9 }
    10 
    11 Widget::~Widget()
    12 {
    13     delete ui;
    14 }
    15 
    16 void Widget::on_pushButton_clicked()
    17 {
    18     QString str1 = ui->lineEdit->text();  //接收输入框输入的信息
    19     QString str2 = ui->lineEdit_2->text();
    20     int a = str1.toInt();
    21     int b = str2.toInt();
    22     int c = a+b;
    23 
    24     QString str3 = QString::number(c);  // 把int类型的c强制转换为字符串类型
    25     ui->label->setText(str3);//setText()接受的只能是QString类型,因此需要转换类型
    26 }
    widget.cpp

     ----------------------------------------------------------------------------------------------------------------------------------

    如果在创建工程不选择创建界面,则不会包含上面提到的界面文件,需要自己用代码设置界面,一般实际项目中也是这样做的

    main函数没有做出任何改变

     1 #ifndef WIDGET_H
     2 #define WIDGET_H
     3 
     4 #include <QWidget>
     5 #include <QPushButton>  //添加按钮的头文件
     6 #include <QHBoxLayout>  //添加横向布局部件的头文件
     7 #include <QVBoxLayout>  //添加纵向布局的头文件
     8 #include <QGridLayout>   //添加grid的布局控件,能够做到精确的行列布局
     9 #include <QLineEdit>    // 添加输入控件的头文件
    10 #include <QLabel>      //添加label控件的插件
    11 
    12 
    13 class Widget : public QWidget
    14 {
    15     Q_OBJECT
    16 
    17 public:
    18     Widget(QWidget *parent = 0);
    19     ~Widget();
    20     QPushButton *btn1; // 定义一个指针
    21     QHBoxLayout *layout1, *layout2,*layout3;
    22     QGridLayout *layout4;
    23     QLineEdit   *edit1,*edit2,*edit3;
    24     QLabel      *lable1,*lable2,*lable3;
    25 private slots:
    26     void on_click();
    27 };
    28 
    29 #endif // WIDGET_H
    widget.h
     1 #include "widget.h"
     2 
     3 Widget::Widget(QWidget *parent)   // 构造函数
     4     : QWidget(parent)
     5 {
     6 
     7 
     8     /*  初始版本的布局
     9     layout1 = new QHBoxLayout(this);  //实例化,this指的是widget窗口,意思是在窗口内加入布局
    10     // QHBoxLayout表示横向布局,如果要上下布局则要采用 QVBoxLayout
    11     btn1 = new QPushButton;  // 实例化出button
    12     layout1->addWidget(btn1);  // 在布局内加入按钮
    13     btn1->setText("确认");  // 修改按钮的名称
    14 
    15     edit1 = new QLineEdit;
    16     layout1->addWidget(edit1);  //添加输入框
    17     edit2 = new QLineEdit;
    18     layout1->addWidget(edit2);  //添加输入框
    19     edit3 = new QLineEdit;
    20     layout1->addWidget(edit3);  //添加输入框
    21 
    22     lable1 = new QLabel;
    23     layout1->addWidget(lable1);
    24     */
    25 
    26     // 采用Grid的布局
    27     btn1 = new QPushButton;
    28     edit1 = new QLineEdit;
    29     edit2 = new QLineEdit;
    30     edit3 = new QLineEdit;
    31     lable1 = new QLabel;
    32 
    33     layout4 = new QGridLayout(this);
    34     layout4->addWidget(btn1, 0, 0);//(0,0)代表位于第几行,第几列
    35     layout4->addWidget(edit1, 0, 1);
    36     layout4->addWidget(edit2, 0, 2);
    37     layout4->addWidget(edit3, 1, 0);
    38     layout4->addWidget(lable1, 1, 1);
    39     btn1->setText("确定");
    40 
    41     connect(btn1,SIGNAL(clicked()),this,SLOT(on_click())); //实现控件与槽函数的关联
    42     //connect(控件,SIGNAL(clicked()),this,SLOT(响应函数))
    43 }
    44 
    45 Widget::~Widget()
    46 {
    47   //只要控件具有集成关系,即与widget有关,在关闭时就会自动析构,不必再释放内存。但若某一控件没有继承,则要手动释放
    48 }
    49 void Widget::on_click()
    50 {
    51     int a = edit1->text().toInt();
    52     int b = edit3->text().toInt();
    53     if (edit2->text() == "+")
    54         lable1->setText(QString::number(a + b));
    55     if (edit2->text() == "-")
    56         lable1->setText(QString::number(a - b));
    57     if (edit2->text() == "*")
    58         lable1->setText(QString::number(a * b));
    59     if (edit2->text() == "/")
    60     {
    61         if (b != 0)
    62            lable1->setText(QString::number(a / b));
    63     }
    64 }
    widget.cpp

    part 3:Qt语法

    1、qt从lineinput接收的认为是QString,需要转换后相应的数据类型后才能处理

    QString str1 = ui->lineEdit->text();   int a = str1.toInt();    转换为整型

    QString str1 = ui->lineEdit->text();  const char *s = str2.toStdString().data(); char c = s[0]; 先转换为char*(字符串型),如果要用到某一字符,再从里面取出即可

    2、alt+enter---快速定义一个函数到指定位置

  • 相关阅读:
    JAVA 从一个List里删除包含另一个List的数据
    CentOS 常用命令合集
    010---软链接和硬链接
    009---linux进程管理
    008---vim编辑器
    007---归档、压缩、解压缩
    006---Linux用户、群组和权限
    005---Linux文件与目录管理
    001---Linux系统的启动过程
    002---Linux系统目录结构
  • 原文地址:https://www.cnblogs.com/youngao/p/9309149.html
Copyright © 2020-2023  润新知