我刚刚在QT-Creator中设计了我的ui,由于主要应用程序是基于两个面板的,我决定使用StackedWidget来"更改布局",而不打开一个新窗口。
因此,我添加了一个名为:stackedWidget的QTStackedWidget(作为默认值)。
问题是在mainwindow.cpp,我添加了一个自定义插槽,其中包含:
ui->stackedWidget->setCurrentIndex(1);
当我构建这个的时候编译器说:
MainWindow .cpp:25:错误:在'Ui::MainWindow'中没有名为'stackedWidget'的成员
用户界面-> stackedWidget -> setCurrentIndex (1),
~ ~ ^
也在qt-creator本身,我无法将信号附加到stackkedwidget,因为它没有向我显示setCurrentIndex SLOT…
任何建议吗?
请注意,我是一个c++新手,我只是在几年前用PyQt4使用Qt。
mainwindow.h:
#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;
private slots:
void showOtherPage();
void showMainPage();
};
#endif // MAINWINDOW_H
mainiwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTimer>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
qDebug() << "MainWindow - Debug Mode ON";
connect(ui->btnOther, SIGNAL(clicked()), SLOT(showOtherPage()));
}
void MainWindow::showOtherPage()
{
qDebug() << "Showing Other Page";
ui->stackedWidget->setCurrentIndex(1);
}
void MainWindow::showMainPage()
{
qDebug() << "Showing Main Page";
ui->stackedWidget->setCurrentIndex(0);
}
MainWindow::~MainWindow()
{
delete ui;
}
我有一个非常相似的问题。其中一个UI操作被定义为其他操作并被使用。我有一个ui has no member named xyz
编译错误,只有这个,没有可能的解释。
我可以通过取消检查/检查项目编译选项中的Shadow build
选项来解决这个问题!
希望它能节省我刚刚失去的30分钟。
今天面临同样的问题。重新创建项目确实有效,虽然我找到了一个解决方案,不会让一个重写一切:)在调试中运行它。一旦你做到了,问题就解决了。
创建一个新项目修复它…我不知道为什么,我仍在寻找一个解释。
我开始了一个新项目,创建了stackedWidget,并测试了页面切换的代码…它只是简单地工作……我仍然不知道为什么另一个不能建立…
检查了一遍又一遍名字和所有的东西
我试过清理项目和运行qmake没有任何运气。然后,我深入到项目文件夹中,删除了ui_***.h文件,一切都开始工作了。可能是因为Visual Studio生成了这个文件,而我是在另一台电脑上用Qt Creator做同样的项目。