Я хотел сделать окно и добавить QTabWidgets с виджетами, которые я ему хочу. Поэтому я следовал примеру Qt TabDialog и из того, что знаю, я придерживался того же пути, что и в примере. Проблема в том, что я получаю эту ошибку при попытке добавить мои виджеты в качестве вкладок: «/home/user/Programming/C++/QtTests/TabExample/TabExample-build-desktop-Desktop_Qt_4_8_1_for_GCC__Qt_SDK__Release/../TabExample/tabwidget.cpp:20: ошибка : нет соответствующей функции для вызова в 'QTabWidget :: addTab (Tab_One *, QString * &)' ". Почему я получаю эту ошибку, потому что Tab_One наследуется от QWidget? Вот мой основной код виджета:Ошибка при попытке добавить виджеты в QTabWidget
Заголовочный файл:
#ifndef TABWIDGET_H
#define TABWIDGET_H
#include <QWidget>
class QTabWidget;
class Tab_One;
class Tab_Two;
class QString;
class QHBoxLayout;
class QDialog;
class TabDialog : public QDialog {
Tab_One *firstTab;
Tab_Two *secondTab;
QTabWidget *myTabWidget;
QString *labelTabOne;
QString *labelTabTwo;
QHBoxLayout *layout;
public:
TabDialog(QWidget *parent = NULL);
};
#endif // TABWIDGET_H
и исходный файл:
#include <QWidget>
#include <QDialog>
#include <QTabWidget>
#include <QHBoxLayout>
#include <QString>
#include "tabwidget.h"
#include "tab1.h"
#include "tab2.h"
TabDialog::TabDialog(QWidget *parent) : QDialog(parent)
{
layout = new QHBoxLayout;
labelTabOne = new QString("My First Tab");
labelTabTwo = new QString("My Second Tab");
myTabWidget = new QTabWidget;
firstTab = new Tab_One;
secondTab = new Tab_Two;
myTabWidget->addTab(firstTab, labelTabOne);
myTabWidget->addTab(secondTab, labelTabTwo);
layout->addWidget(myTabWidget);
setLayout(layout);
}
и вот один из моих widets (Tab1): Заголовок:
#ifndef TAB1_H
#define TAB1_H
#include <QWidget>
class QVBoxLayout;
class QPushButton;
class Tab_One : public QWidget {
QPushButton *button_one;
QPushButton *button_two;
QVBoxLayout *layout;
public:
Tab_One(QWidget *parent = NULL);
};
#endif // TAB1_H
и источник:
#include <QWidget>
#include <QDialog>
#include <QTabWidget>
#include <QHBoxLayout>
#include <QString>
#include "tabwidget.h"
#include "tab1.h"
#include "tab2.h"
TabDialog::TabDialog(QWidget *parent) : QDialog(parent)
{
layout = new QHBoxLayout;
labelTabOne = new QString("My First Tab");
labelTabTwo = new QString("My Second Tab");
myTabWidget = new QTabWidget;
myTabWidget->addTab(new Tab_One(this), labelTabOne);
myTabWidget->addTab(new Tab_Two(this), labelTabTwo);
layout->addWidget(myTabWidget);
setLayout(layout);
}
Большое спасибо и извините за длинный пост
Бог, я не могу поверить в это ... спасибо большое! –