Piszę sobie projekt w Qt i przy okazji uczę się tego frameworka. Zadam pytanie tutaj na forum, bo nie znalazłem nigdzie indziej choćby wskazówki dlaczego mój kod działa niepoprawnie. Przejdę do rzeczy. Oto pliki:
MainWindow.h
:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class TabWidget;
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_actionNext_tab_triggered();
private:
Ui::MainWindow *ui;
TabWidget *mTabWidget;
};
#endif // MAINWINDOW_H
TabWidget.h
#ifndef TABWIDGET_H
#define TABWIDGET_H
#include <QTabWidget>
#include <QMainWindow>
class TabWidget : public QTabWidget
{
public:
TabWidget();
void showNextTab();
};
#endif // TABWIDGET_H
MainWindow.cpp
#include "MainWindow.h"
#include "ui_MainWindow.h"
#include <QTabWidget>
#include "TabWidget.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
mTabWidget = new TabWidget;
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_actionNext_tab_triggered()
{
mTabWidget->showNextTab();
}
TabWidget.cpp
#include <QTabWidget>
#include <QTextStream>
#include "TabWidget.h"
TabWidget::TabWidget()
{
}
void TabWidget::showNextTab()
{
QTextStream(stdout) << QTabWidget::count() << '\n';
}
Całość działa tak, że gdy kliknę Next Tab
w menu programu, zostaje wywołana metoda void TabWidget::showNextTab()
, która powinna zwrócić ilość zakładek umieszczonych wewnątrz tab baru
. Niestety ilość zakładek według metody count
wynosi 0 i nie potrafię rozgryźć dlaczego. W screenshotach przesyłam strukturę pliku .ui
oraz wygląd tab baru z poziomu aplikacji.
Niestety nie wiem jeszcze jak mógłbym debugować taką sytuację więc informacja o tym jak wyłapywać takie błędy w Qt byłaby dla mnie bardzo przydatna i byłbym wdzięczny za pomoc :)