初次使用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项目