初次使用QT遇到的問題及解決
近期要實現一個攝像頭相機畸變矯正的小工具,GUI界面通過VS2017+QT5.12.3實現。
QT安裝教程有很多,儘量用離線安裝包,在線安裝的話,很容易漏掉一些包裝不全。
VS配置QT環境請移步:https://www.jianshu.com/p/3fea9b7b111c
小白會遇到很多問題:
- 選擇創建何種項目? 因爲暫時開發windows程序,Qt Creator下創建第一個GUI項目:Application -> Qt Widgets Application
- 名稱,路徑
- 合適的編譯環境,這裏用MSVC2017 32bit,因爲要在VS2017上開發,MSVC2017環境是最合適的。
- 創建基本文件
- 文件結構如下:
- mianwindow.ui 文件友Qt Designer 設計而成,並且編譯時會轉換爲ui_mainwindow.h文件,裏面包含設計好的各種控件的對象及其屬性信息,如QLabel *label_3;
- mainwindow.cpp中已經 #include “ui_mainwindow.h”。mainwindow.h中主類MainWindow繼承QMainWindow框架,並聲明私有對象,Ui::MainWindow *ui; 因此可以在mainwindow.cpp用ui對象調用控件,如獲取label的內容:ui->label->text();
- main.cpp主函數可設置窗口大小、標題等…
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow w;
w.resize(800,600); // 調整窗口小部件的大小
w.setWindowTitle("Camera Calibration Tool");
w.show();
return app.exec(); //exec()方法是應用程序的主循環。
}
//mainwindow.h
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
};
//mainwindow.cpp
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->label_4->setText("");
ui->label_5->setText("");
ui->label_6->setText("");
// 創建一個新的QPushButton。
// 手動調整它的大小並使用setGeometry()方法將它放在窗口上。
//退出button
QPushButton *quitBtn = new QPushButton("Quit", this);
quitBtn->setGeometry(100, 200, 75, 30);
connect(quitBtn, &QPushButton::clicked, qApp, &QApplication::quit);
}
在VS下開發目錄結構等的類似,需創建Qt Gui Application項目