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

How do I declare objects from my main window in Qt Creator?

本文关键字:窗口 声明 对象 Qt Creator      更新时间:2023-10-16

这个问题应该很容易回答。我使用QtCreator在MainWindow中创建了几个按钮,当我为这些按钮编写函数时,编译器说它们没有在这个范围内声明。要声明这些对象,我需要#包含什么?以下的编译器错误为"baseDir"未在此作用域中声明。baseDir是我的窗口中lineEdit的objectName。

主窗口.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

主窗口.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 );
}

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

试用:

ui->baseDir->setText( path );

如果您很好奇,请查看构建过程中生成的ui_mainwindow.h文件。