第一章:认识Qt
如何添加第三方库
- Qt Creater在pro文件下进行添加
- Vs2019在右键属性Qt设置里添加
QMake与CMake
qmake:qt独有的代码构建工具
cmake:C++通用的代码构建工具,绝大部分C++开源项目都是使用cmake管理代码,如obs
,jsoncpp
总结:
- 如果你主要在开发Qt应用程序,尤其是当你不需要复杂的自定义构建逻辑时,QMake可能是更简单直接的选择。
- 如果你的项目需要跨平台支持,或者你需要一种更灵活、功能更强大的构建系统,CMake可能是更好的选择。
Qt的三个窗口
- QMainWindow:是Qt提供的一个主窗口类,它为应用程序提供了一个带有菜单栏、工具栏、状态栏、和可选的停靠窗口(dock widgets)和中心窗口的主窗口。适合做应用程序的主界面。
- QWidget:是所有用户界面对象的基类。它可以作为一个独立的窗口或者是其他窗口(如
QMainWindow
、QDialog
)中的一个组件使用。它通常被用来创建应用程序中的简单窗口或作为组合较复杂控件的基础。
- QDialog:是用于创建对话框的基类。通常用于短暂的交互,如收集用户输入、显示信息、询问用户决策等。
一些控件的介绍
QLabel
- 设置文本:
void setText(const QString &);
- 获取文本:
QString text() const;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
#include "widget.h" #include <QLabel> #include <QVBoxLayout> #include <QDebug>
Widget::Widget(QWidget *parent) : QWidget(parent) { QVBoxLayout *layout = new QVBoxLayout(this);
QLabel *label = new QLabel(); label->setText("this is jasonqian");
layout->addWidget(label);
qDebug() << label->text(); }
Widget::~Widget() {}
|
- 设置图片:
void setPixmap(const Pixmap &);
如何传入Pixmap
的参数?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| static QString getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, Options options = Options());
参数说明: parent: 父窗口,一般填写this caption: 打开窗口的标题 dir: 打开的目录 filter: 文件类型过滤器,例如*.txt, *.mp4, *.json
样例展示: QString fileName = QFileDialog::getOpenFileName(this, "请选择图片", "C:/", "图片(*.png *.jpg);;"); 注意: ";;":这部分是两个分号,用于指示过滤器字符串的结束。即使在这个例子中,它是多余的,因为只有一个过滤器,但它是必需的,以便告诉getOpenFileName()函数没有更多的过滤器了。
|
代码展示:
1 2 3 4 5 6 7 8 9 10 11
| QVBoxLayout *layout = new QVBoxLayout(this);
QString fileName = QFileDialog::getOpenFileName(this, "请选择图片", "C:/", "图片(*.png *.jpg);;");
QLabel *label = new QLabel(); label->setPixmap(fileName);
layout->addWidget(label);
qDebug() << label->text();
|
QLineEdit
- 设置文本:
void setText(const QString &);
- 获取文本:
QString text() const;
- 设置文本:
void setText(const QString &);
- 获取文本:
QString text() const;
- 主要信号:
void clicked(bool checked = false);
- 使用方法:
connect(按钮对象指针, &QPushButton::clicked, this, &界面类::槽函数)
- 槽函数常用写法:
void on_空间名字_clicked();
槽函数需要在头文件.h
中写
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #ifndef WIDGET_H #define WIDGET_H
#include <QWidget>
class Widget : public QWidget { Q_OBJECT private slots: void on_btn_clicked(); ... }; #endif
|
widget.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #include "widget.h" #include <QPushButton> #include <QVBoxLayout> #include <QDebug>
Widget::Widget(QWidget *parent) : QWidget(parent) { QVBoxLayout *layout = new QVBoxLayout(this);
QPushButton *btn = new QPushButton(this); btn->setText("jasonqian");
layout->addWidget(btn);
connect(btn, &QPushButton::clicked, this, &Widget::on_btn_clicked); }
Widget::~Widget() {}
void Widget::on_btn_clicked() { qDebug() << "jasonqian"; }
|