初识QLabel,单行文本框,多行文本框,QDebug()输出,普通按钮,信号和槽(1)
目录
初始QLabel
单行文本框与多行文本框
QDebug输出函数
普通按钮
初始QLabel
QLabel是一个标签组件,在如下图像界面进行拖入展示

也可以如下创建方式进行创建。
#include <QLabel> QLabel* lab = new QLabel(this);
初次认识只需要掌握setText(const QString)这一个给标签组件命名的方法(输入内容)。
lab->setText("huanshjdd");
注意:仅有const QString类型才可以被string / const string直接转化。
单行文本框与多行文本框
#include "widget.h"
#include "ui_widget.h"
#include <QLineEdit>
#include <QTextEdit>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
// QLineEdit* edit = new QLineEdit(this); //单行文本输入框
// edit->setText("hello word");QTextEdit* edit = new QTextEdit(this);//多行文本输入框,也就是多行富文本编辑框edit->setText("efhvefvvefsjb");ui->textEdit_2->setText("hdjfesjfhesf"); //QTextEdit *textEdit_2,对象名字是指向自己的指针,相当于使用指向自己的对象的指针调用自己的方法//输入框和label的唯一区别就是可以在界面直接修改里面输入的数值
}Widget::~Widget()
{delete ui;
}
QT中大多数组件的头文件和组件是一样的,尽量采用这种头文件包含方式,基本上所有的组件都包含setText方法来设置文本
QDebug输出函数
#include "mylabel.h"
#include "QLabel"
#include <iostream>
#include <QDebug> //使用<>进行包含也是可以的
#include <QString>
using namespace std;
mylabel::mylabel(QWidget* parent):QLabel(parent)
{//
}
mylabel::~mylabel()
{//使用cout会导致输出和显示在控制台的编码格式不匹配,字符串是默认utf-8的格式进行编码的cout << "已经销毁了" << endl;//外面要正确显示只能使用qDebug, qDebug()相当于cout进行使用,规则完全一致QString str = "已经销毁了";qDebug() << str << endl; //Qstring可以转化成const char*qDebug() << "已经销毁了" << endl;//qDebug() 的“刷新链条”更短,比cout快//qDebug()可以跨平台、可统一关闭、可重定向、线程安全,主要是可以统一关闭所有的输出。
}

为什么输入提示会有三个差不多的呢,第一个是qDebug() 是你唯一要调用的,第二个QDebug 是它返回的类型,第三个是展示可以输出的重载类型信息。
普通按钮
Widget.h#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QPushButton>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void handler();private:Ui::Widget *ui;QPushButton* button;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include <QPushButton> //创建一个点击按钮需要的头文件//QPushButton 就是 Qt 里最普通、最常用的一种“点击按钮”控件。
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);button = new QPushButton(this);button->setText("feves"); //在按钮上显示的文字,相当于给按钮进行表面命名//connect(button, &QPushButton::clicked, this, &Widget::handler);//并不是在“立刻调用”成员函数,而是把成员函数的地址(指针)传给 Qt 元对象系统;当信号 clicked() 稍后发射时,//Qt 会在** this 指向的那个实例**上调用该函数。和cpp的仿函数不同ui->pushButton->setText("esfvsfee");connect(button, &QPushButton::clicked, this, [this](){if (this->button->text() == "feves"){this->button->setText("finish");}else{this->button->setText("feves");}});//bind, lambda表达式也可以}
void Widget::handler()
{if (button->text() == "feves"){button->setText("finish");}else{button->setText("feves");}
}Widget::~Widget()
{delete ui;
}


我们也可以使用图形化界面进行更快速的绑定槽函数。
#include "widget.h"
#include "ui_widget.h"
#include <QPushButton>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QPushButton* button = new QPushButton(this);button->setText("efsegrg");button->move(300, 400); //move函数用于挪动组件或者widget窗口相当于与左上角(0,0)像素的位置}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked() //函数名就体现了回调clicked事件的函数,connect都不要写了
{if (ui->pushButton->text() == "shhdhhd"){ui->pushButton->setWindowTitle("dsff"); //这是 QWidget 的函数,用来设置顶层窗口的标题栏文字。//QPushButton 继承自 QWidget,而 QWidget 提供了 setWindowTitle(),所以所有控件“理论上”都能调用它。this->setWindowTitle("efesfegf");//只有当这个控件是顶层窗口时才有效果,//否则它只是一个“空操作”,但不会报错,因为语法上合法。}
}


我们会发现关于按钮的信号有5个,我们之后会一一介绍。

使用connect时怎么区分哪个是信号哪个是槽函数呢,

对于系统自带的信号和槽可以通过图标形象的看出,带有锯齿的就是槽函数,带有一个波痕的就是信号。
