如何在Qt Creator中从主窗口声明对象?

时间:2011-06-08 17:13:50

标签: c++ qt

这个问题应该很容易回答。我使用Qt Creator在我的MainWindow中创建了一些按钮,当我去编写按钮的函数时,编译器说它们没有在这个范围内声明。对于要声明的这些对象,我需要#include?下面的编译器错误是“baseDir”未在此范围内声明。 baseDir是我窗口中lineEdit的objectName。

mainwindow.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H

    #include <QMainWindow>
    #include "ui_mainwindow.h"

    namespace Ui {
        class MainWindow;
    }

   class MainWindow : public QMainWindow
   {
        Q_OBJECT

    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();

    public slots:
        void getDir();
        void createProj();

    private slots:
        void on_findDir_clicked();

        void on_create_clicked();

    private:
        Ui::MainWindow *ui;
    };

    #endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "functions.h"
#include <QtGui/QApplication>
#include <QFileDialog>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_findDir_clicked()
{
    QString path;

    path = QFileDialog::getOpenFileName(
        this,
        "Choose a file to open",
        QString::null,
        QString::null );

    baseDir->setText( path );
}

1 个答案:

答案 0 :(得分:2)

您在.ui文件中定义的项目不会直接添加到主窗口类中,而是会添加到其ui membre。

尝试:

ui->baseDir->setText( path );

如果您感到好奇,请查看构建期间生成的ui_mainwindow.h文件。