Qt Creator no member named stackedWidget

一曲冷凌霜 提交于 2019-12-20 05:52:34

问题


I've just designed my ui in the QT-Creator and, as the main application is based on two panels, I decided to use the StackedWidget for "change the layout" without opening a new window.

So, I added a QTStackedWidget named: stackedWidget (as default).

The problem is in mainwindow.cpp, I added a custom SLOT that contain:

ui->stackedWidget->setCurrentIndex(1);

when I build this the compiler says:

mainwindow.cpp:25: error: no member named 'stackedWidget' in 'Ui::MainWindow'
ui->stackedWidget->setCurrentIndex(1);
~~ ^

also in the qt-creator itself I was unable to attach a signal to the stackedWidget because it doesn't show to me the setCurrentIndex SLOT...

any advice?

Please note that I'm a noob with C++ I just used Qt a couple of years ago with 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;
}

回答1:


I had a very similar issue. One of the UI actions was defined as the others and used. I had a ui has no member named xyz compilation error for this one only, without possible explanation.

I could solve it by unchecking/checking the Shadow build option in the project compilation options!

Hope it saves someone the 30 minutes I just lost :)




回答2:


Creating a new project fixed it... I don't know why, I'm still looking for an explanation.

I started a new project, created the stackedWidget, and tested the code for the page-switching... it just simply works... and I still do not know WHY the other one fail to build...

Checked again and again names and everything.



来源:https://stackoverflow.com/questions/24549660/qt-creator-no-member-named-stackedwidget

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!