首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

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

2012-05-21 
初尝QT 弱弱地急问两个问题1.新建一个空的pro, 直接运行, 正常的话应该是产生一个空的窗口,自动生成如下代

初尝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)函数里进行初始化的,只有这些控件已经进行了初始化之后,它可以对它进行操作。比如信号和槽的连接等等。

热点排行