非界面编程
QT编译的时候,依赖于 .pro 配置文件:
SOURCES: 所有需要参与编译的 .cpp 源文件
HEADERS:所有需要参与编译的.h 头文件
QT:所有需要参与编译的 QT函数库
.pro文件一旦修改,注意需要键盘按 ctrl+s 才能加载最新的配置文件
标准输出:QDebug 类
#include <QDebug>
qDebug() << 输出的数据;
qDebug() 是全局函数, 返回 QDebug 对象【 c++中的cout】
QT所有的类,以 Q 开头
第二个字母通常也大写
界面编程
使用QT界面,显示 hello world
查找函数
1:哪个类的
2: CONTENTS : 目录
3:类名 class:基础信息
#include :依赖的头文件
QT:依赖库文件,在 .pro 文件中 QT标签后面追加
Inherits: 基类
Inherits by :有哪些派生类
4:Public Functions: 类中所有公开函数
QWidget
比较底层的窗口类,是很多很多窗口类的基类
QWidget的函数,很多窗口继承
QWidget 类:一般作为一个复合型窗口的底座
一个窗口是复杂的,里面复合了很多子窗口
子窗口,都需要依赖底座父窗口去实现
QWidget就是底座功能
设置几何图形:
setGeometry(x,y,w,h) 左上角的坐标 x,y , 图形的宽度高度获取 x轴坐标和y轴坐标:
int x() const
int y() const
QLabel
这个窗口专门承载文字和图片
承载文字
1 设置文字 setText(“”)
2 获取文字 QString text()
调整文字格式
QFont 类对象 设置文字格式
QFont font
font.setBold(1) 设置文字是否粗体
font.setItalic(1) 设置文字是否斜体
font.setPointSize(int pointSize) 设置文字大小
将调整好的文字设置给 label
QLabel lb
lb.setFont(font)
文字调整颜色
QPalette pe;
pe.setColor(QPalette::WindowText,Qt::red);//第一个参数是宏,设置label中哪部分的颜色
lb.setPalette(pe);
文字居中
//lb.setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
lb.setAlignment(Qt::AlignCenter);
承载图片
QLabel lb;
lb.setPixmap()
QLineEdit
文本编辑器,单行文本输入,支持设置占位文字和隐藏输入内容
使用代码输入/获取文字
setText(文字)
QString text()
设置占位文字
setPlaceholderText(占位文字)
输入的文字隐藏
setEchoMode(宏定义)
#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QLineEdit>
#include <QVBoxLayout>
#include<QDebug>
int main(int argc, char *argv[])
{QWidget window;QVBoxLayout *layout = new QVBoxLayout(&window);// 创建 QLineEditQLineEdit *lineEdit = new QLineEdit;layout->addWidget(lineEdit);// 创建按钮QPushButton *button = new QPushButton("Get Text");layout->addWidget(button);// 连接按钮点击信号到槽函数QObject::connect(button, &QPushButton::clicked, [lineEdit]() {QString text = lineEdit->text(); // 获取输入的文字qDebug() << "Text:" << text;});// 设置文字//lineEdit->setText("Hello, QLineEdit!");//lineEdit->setPlaceholderText("占位文字");// lineEdit->setEchoMode(QLineEdit::Normal);//正常显示// lineEdit->setEchoMode(QLineEdit::NoEcho);//不显示// lineEdit->setEchoMode(QLineEdit::Password);//密码隐藏//lineEdit->setEchoMode(QLineEdit::PasswordEchoOnEdit);// 输入的时候不隐藏,输完再隐藏.编辑完,指的是,操作对象不再是当前窗口,也就是所谓的 "失去焦点"window.show();return app.exec(); // 启动事件循环
}
QTextEdit
允许有回车的文本编辑器
多行文本输入,支持富文本和图片插入。
QString toPlainText() 获取文本编辑器中的文字
setText(文字) 设置文字
设置图片
依赖 html 格式的代码
html的语句,直接通过 setText 去设置
QT针对HTML语句做过简化,最终
te.setText("<img src=D:/qrc/shi.jpg width=300 hegith=300>");
toHtml:将文本编辑器中的数据,转换成html语句
int main(int argc, char *argv[])
{QApplication app(argc, argv);QWidget window;QVBoxLayout *layout = new QVBoxLayout(&window);// 创建 QTextEditQTextEdit *textEdit = new QTextEdit;layout->addWidget(textEdit);// 创建按钮QPushButton *button = new QPushButton("Insert Image");layout->addWidget(button);// 连接按钮点击信号到槽函数QObject::connect(button, &QPushButton::clicked, [textEdit]() {// 插入图片QTextCursor cursor = textEdit->textCursor();QImage image(":/path/to/image.png"); // 图片路径textEdit->document()->addResource(QTextDocument::ImageResource, QUrl("image"), image);cursor.insertImage("image");});window.show();return app.exec();
}
QPushButton
普通按钮
设置按钮文字
QPushButton btn
btn.setText("文字")