我在QT-Creator中设计了我的ui,并且由于主要应用程序基于两个面板,我决定使用StackedWidget来改变布局"没有打开新窗口。
所以,我添加了一个名为:stackedWidget(默认)的QTStackedWidget。
问题在于mainwindow.cpp,我添加了一个包含以下内容的自定义SLOT:
ui->stackedWidget->setCurrentIndex(1);
当我构建这个时,编译器说:
mainwindow.cpp:25:错误:没有名为' stackedWidget' in' Ui :: MainWindow'
UI-> stackedWidget-> setCurrentIndex(1);
~~ ^
同样在qt-creator本身我无法将信号附加到stackedWidget,因为它没有向我显示setCurrentIndex SLOT ......
任何建议?
请注意,我是一个使用C ++的菜鸟我几年前刚用过PyQt4。
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;
}
答案 0 :(得分:1)
我有一个非常类似的问题。
其中一个UI操作被定义为其他操作并使用。
我只有ui has no member named xyz
编译错误,没有可能的解释。
我可以通过取消选中/检查项目编译选项中的Shadow build
选项来解决它!
希望它能为我失去的30分钟拯救某人:)
答案 1 :(得分:1)
今天遇到了同样的问题。重新创建项目确实可以,尽管我找到了一种解决方案,该方案不会重写所有内容:)在Debug中运行它。完成后,问题就解决了。
答案 2 :(得分:0)
创建一个新项目修复它...我不知道为什么,我还在寻找解释。
我开始了一个新项目,创建了stackedWidget,并测试了页面切换的代码...它只是简单地工作......我仍然不知道为什么另一个无法构建...
一次又一次地检查姓名和所有内容。