安装(开源版在线安装)
5.15及以上版本安装
-
安装前需要先注册Qt账号:https://login.qt.io/register
-
选择自定义方式安装
-
选择安装组件
Sources组件占磁盘2.32G(可选项)
配置环境变量
export QT_ROOT="$HOME/Qt/6.6.1/macos"
export QTDIR="$HOME/Qt/6.6.1/macos"
首选项配置cmake
官方文档
创建项目
代码示例
目录结构
UI界面设计
完整代码
- main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
// 设置窗口标题
w.setWindowTitle("窗口标题");
w.show();
return a.exec();
}
- mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QCloseEvent>
#include <QPushButton>
#include <QComboBox>
#include <QLineEdit>
#include <QDebug>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
protected:
// 关闭窗口事件
void closeEvent(QCloseEvent *event) override;
private slots:
// 按钮事件
void on_buttonClicked();
// comboBox事件
void on_comboBoxCurrentIndexChanged(int index);
void on_comboBoxCurrentTextChanged(const QString &arg1);
void on_comboBoxActivated(int index);
// 输入框事件
void lineEditTextChanged(const QString &text);
void lineEditReturnPressed();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
- mainwindow.cpp
#include "mainwindow.h"
#include "./ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 绑定按钮点击事件
connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::on_buttonClicked);
ui->comboBox->clear();
// comboBox选项数据
QMap<QString, int> itemMap;
itemMap.insert("item1", 1);
itemMap.insert("item2", 2);
itemMap.insert("item3", 3);
itemMap.insert("item4", 4);
foreach(const QString &str, itemMap.keys()) ui->comboBox->addItem(str, itemMap.value(str));
ui->comboBox->setCurrentIndex(0);
// 绑定comboBox变化事件
connect(ui->comboBox, &QComboBox::currentIndexChanged, this, &MainWindow::on_comboBoxCurrentIndexChanged);
connect(ui->comboBox, &QComboBox::currentTextChanged, this, &MainWindow::on_comboBoxCurrentTextChanged);
connect(ui->comboBox, &QComboBox::activated, this, &MainWindow::on_comboBoxActivated);
// 绑定输入框变化与回车事件
connect(ui->lineEdit, &QLineEdit::textChanged, this, &MainWindow::lineEditTextChanged);
connect(ui->lineEdit, &QLineEdit::returnPressed, this, &MainWindow::lineEditReturnPressed);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::closeEvent(QCloseEvent *event)
{
// 在这里编写自定义的关闭操作
qDebug()<<"closeEvent";
// 接受关闭事件并关闭窗口
event->accept();
}
void MainWindow::on_buttonClicked()
{
qDebug()<<"buttonClicked";
}
void MainWindow::on_comboBoxCurrentIndexChanged(int index)
{
qDebug()<<"on_comboBox_currentIndexChanged"<<index;
QString text = ui->comboBox->currentText();
QString id = ui->comboBox->currentData().toString();
qDebug()<<"id=" + id + ",text=" +text;
}
void MainWindow::on_comboBoxCurrentTextChanged(const QString &arg1)
{
qDebug()<<"on_comboBox_currentTextChanged"<<arg1;
}
void MainWindow::on_comboBoxActivated(int index)
{
qDebug()<<"on_comboBox_activated"<<index;
}
void MainWindow::lineEditTextChanged(const QString &text)
{
qDebug()<<"lineEditTextChanged"<<text;
}
void MainWindow::lineEditReturnPressed()
{
QString text = ui->lineEdit->text();
qDebug()<<"lineEditReturnPressed"<<text;
}
- 运行效果