QT学习日记1


2024.3.29

Qt下载及安装:略
Qt资料:Qt 编程指南

新建一个Qt桌面应用,可以看到主要的一些文件:mainwindow.h,main.cpp,mainwindow.cpp
mainwindow.h定义了一个类,而该类的函数都被写在mainwindow.cpp中。
给空白的window添加了一个设置标题的函数,一个按钮和一个单行文本输入框。
代码如下:

mainwindow.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

class MainWindow : public QMainWindow
{
Q_OBJECT
public:
//构造函数
MainWindow(QWidget *parent = nullptr);
//析构函数
~MainWindow();
//设置标题
void setWindowTitle(const QString &title);
//按钮信号处理
void handleButtonClick();
};
#endif // MAINWINDOW_H
mainwindow.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
29
30
31
32
33
34
35
36
37
38
39
40
#include "mainwindow.h"
#include <QPushButton>
#include <QLineEdit>
//构造函数
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QPushButton *button1=new QPushButton("button1",this);
//新建按钮
button1->setGeometry(10,10,100,30);
//设置按钮位置和大小
//setGeometry:设置元件位置,x,y,横向长度,纵向高度
connect(button1,&QPushButton::clicked,this,&MainWindow::handleButtonClick);
//设置按下按钮触发的函数,用了信号与槽的机制,但是我还没学明白

QLineEdit *lineedit=new QLineEdit("",this);
//新建输入框
// QLineEdit *lineedit=new QLineEdit();
//这么写的话好像不会出现输入框,但是当时也没有setGeometry
lineedit->setGeometry(10,50,100,30);
//设置输入框位置和大小
connect(lineedit,&QLineEdit::textChanged,[=](const QString &text){
qDebug()<<"text="<<text;
});
//设置输入框相关,这里是框内文本发生变化就会运行一次函数,输出一次text=
}
//析构函数
MainWindow::~MainWindow() {
qDebug() << "关闭";
}
//设置文章标题
void MainWindow::setWindowTitle(const QString &title)
{
QMainWindow::setWindowTitle(title);
}
//处理按钮点击事件
void MainWindow::handleButtonClick()
{
qDebug() << "按钮被点击了!";
}
main.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
#include "mainwindow.h"

#include <QApplication>
#include <QLocale>
#include <QTranslator>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//这里是在新建项目时,选了translation,中文
QTranslator translator;
const QStringList uiLanguages = QLocale::system().uiLanguages();
for (const QString &locale : uiLanguages) {
const QString baseName = "ff2_" + QLocale(locale).name();
if (translator.load(":/i18n/" + baseName)) {
a.installTranslator(&translator);
break;
}
}
MainWindow w;
//设置标题
w.setWindowTitle("rain4ky的文件列表");
w.show();
//exec函数。。不是很懂
return a.exec();
}