当前位置: 代码迷 >> QT开发 >> 初尝QT 弱弱地急问两个有关问题
  详细解决方案

初尝QT 弱弱地急问两个有关问题

热度:67   发布时间:2016-04-25 04:48:32.0
初尝QT 弱弱地急问两个问题
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和主窗口到底是什么关系呢,ui可以操控mainWindow中的内容

引用:
Ui::MainWindow *ui;这个MainWindow和另一个MainWindow 不是同一个类,Ui::MainWindow *ui;这个是UI的,他用了命名空间,避免MainWindow 冲突。
http://blog.csdn.net/qustdjx/……

------解决方案--------------------
ui是一个指针,它指向MainWindow,而这个MainWindow是属于Ui这个名字空间的,它跟全局名字空间里的MainWindow不是同一个类。C++的名字空间机制就是为了防止名字冲突才引入的。
初始化窗口里面一些控件的信息或者设置connect的时候 必须要放在ui->setupUi(this);这一句后面呢。那是因为现在的这些控件都是在ui的setupUi(this)函数里进行初始化的,只有这些控件已经进行了初始化之后,它可以对它进行操作。比如信号和槽的连接等等。
  相关解决方案