Я только что спроектировал свой интерфейс в QT-Creator и, поскольку основное приложение основано на двух панелях, я решил использовать StackedWidget для «изменения макета» без открытия нового окна.
Итак, я добавил QTStackedWidget с именем: stackedWidget (по умолчанию).
Проблема в mainwindow.cpp, я добавил пользовательский слот, который содержит:
ui->stackedWidget->setCurrentIndex(1);
когда я собираю это, компилятор говорит:
mainwindow.cpp: 25: ошибка: ни один член с именем ‘stackedWidget’ в ‘Ui :: MainWindow’
ui-> stackedWidget-> setCurrentIndex (1);
~~ ^
также в самом qt-creator я не смог прикрепить сигнал к stackedWidget, потому что он не показывает мне слот setCurrentIndex …
любой совет?
Обратите внимание, что я новичок в C ++, я только что использовал Qt пару лет назад с 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;
}
У меня была очень похожая проблема.
Одно из действий пользовательского интерфейса было определено как другие и использовалось.
У меня есть ui has no member named xyz
ошибка компиляции только для этого, без возможного объяснения.
Я мог бы решить эту проблему, сняв флажок / проверяя Shadow build
опция в опциях компиляции проекта!
Надеюсь, это спасет кого-то за 30 минут, которые я только что потерял 🙂
Создание нового проекта исправило это … Я не знаю почему, я все еще ищу объяснение.
Я запустил новый проект, создал stackedWidget и протестировал код для переключения страниц … он просто работает … и я до сих пор не знаю, ПОЧЕМУ другой не удается построить …
Проверено снова и снова имена и все.