Я использую Qt5, и я создал класс «внешний» со «внутренним» классом. «Внутренний» класс имеет два объекта QComboBox «cb1» и «cb2» как частные переменные.Как обрабатывать сигналы QComboBox во внутренних классах
В принципе, отображаемый текст второго QComboBox, «cb2», зависит от текущего текста первого QComboBox «cb1». Фактически, легко реализовать соединение между этими двумя, используя сигналы и слоты, написав соответствующий слот.
Проблема в том, что Qt не поддерживает запись слотов внутри внутреннего класса. Это меня смущает.
Как я могу обрабатывать связь между этими двумя QComboBoxes во внутреннем классе?
Для некоторого кода,
class Outer : public QDialog
{
Q_OBJECT
// private variables;
class Inner : public QWidget
{
QComboBox *cb1, *cb2;
// Other variables;
public:
// Public methods
public slots:
void setIndex(int i);
};
// Other things;
};
Внутренняя реализация
Outer::Inner::Inner()
{
// Useless things;
connect(cb1, SIGNAL(currentIndexChanged(int)), this, SLOT(setIndex(int)));
}
Outer::Inner::setIndex(int i)
{
// Some stuff to retrieve the correct index in cb2;
}
Почему вы должны использовать внутренний класс в этом случае? Это действительно необходимо? Вы можете задокументировать это как личное и разучить его! – Robert
На самом деле это QTabWidget с вкладками QWidget как внутренние классы. Я не хочу использовать виджеты вкладки как отдельные классы, потому что я не хочу, чтобы эти вкладки использовались где-то еще. – Patrik
Это Qt4 или Qt5? –