1.新建一个空的pro, 直接运行, 正常的话应该是产生一个空的窗口,自动生成如下代码
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
报错如下:
进程"c:\qtsdk\desktop\qt\4.8.0\msvc2010\bin\qmake.exe"退出,退出代码 2 。
构建项目3 时发生错误 (目标: 桌面)
当执行构建步骤 'qmake'时
这种情况在我把项目文件建在E盘或其他盘的时候时出现,一旦我建在桌面,就没问题了,这是什么原因呢,那段报错原因看不懂
2.头文件里边的
private:
Ui::MainWindow *ui;
这个是什么意思 ui是一个指向mainwindow对象的指针么
构造函数通常有一句 ui->setupUi(this);
我要初始化窗口里面一些控件的信息或者设置connect的时候 为什么要放在ui->setupUi(this);这一句后面呢
------解决方案--------------------
这种问题一般不是代码的问题,在你的目录没有中文,没有空格的前提下,你看看你的构建目录对不对。
------解决方案--------------------
------解决方案--------------------
ui是一个指针,它指向MainWindow,而这个MainWindow是属于Ui这个名字空间的,它跟全局名字空间里的MainWindow不是同一个类。C++的名字空间机制就是为了防止名字冲突才引入的。
初始化窗口里面一些控件的信息或者设置connect的时候 必须要放在ui->setupUi(this);这一句后面呢。那是因为现在的这些控件都是在ui的setupUi(this)函数里进行初始化的,只有这些控件已经进行了初始化之后,它可以对它进行操作。比如信号和槽的连接等等。