Я бы хотел разместить экземпляр QMainWindow внутри другого QWidget (например, centralWidget другого QMainWindow).
Мне интересно, почему это не работает? QMainWindow наследуется непосредственно от QWidget. Размещение QWidget внутри другого QWidget работает нормально.
Я часто помещаю экземпляры QMainWindow в QTabBar без каких-либо проблем.
ps Вы можете спросить, зачем мне использовать QMainWindow? Я хочу разместить 2 виджета внутри 1 формы, используя вертикальное расположение. Я хочу, чтобы оба виджета имели отдельные панели инструментов прямо над ними.
Может быть, есть какой-то другой способ разместить панели инструментов внутри простых QWidgets, используя QtCreator?
Редактировать
Первый пример (работает нормально)
Я создаю новый класс / форму на основе QWidget. (QtCreator создает 3 файла * .cpp, * .h и * .ui на основе стандартных шаблонов).
Объявление класса выглядит следующим образом
class NotesEditor : public QWidget
{
Q_OBJECT
public:
explicit NotesEditor(QWidget *parent = 0);
~NotesEditor();
private:
Ui::NotesEditor *ui;
};
Когда я пытаюсь использовать этот виджет и поместить его в другой виджет, он работает нормально.
Я использовал функцию "повысить до ..." в qtcreator - здесь нет проблем.
Второй пример (не работает)
Я создаю новый класс / форму на основе QMainWindow. (QtCreator создает 3 файла * .cpp, * .h и * .ui на основе стандартных шаблонов).
Объявление класса выглядит так:
class Notes : public QMainWindow
{
Q_OBJECT
public:
explicit Notes(QWidget *parent = 0);
~Notes();
private:
Ui::Notes *ui;
};
А теперь, когда я пытаюсь разместить этот виджет в другом виджете, его не видно.
Так же, как и раньше, я использовал функцию "повысить до ..." qtcreator.
Оба виджета (первый на основе QWidget, второй на основе QMainWindow) имеют одинаковую структуру по умолчанию на основе стандартных шаблонов кода qtcreator. Я не сильно изменился здесь - просто добавил несколько кнопок в дизайнере форм.
Во втором примере я пытался использовать setEnabled (true) и setVisible (true) для экземпляра класса. Первый не дает результатов. Второй открывает этот виджет в отдельном окне.
Я думаю, что большой вопрос в том, что вероятнее всего QMainWindow будет вложен в другой QWidget. Как я писал ранее, экземпляры QMainWindow могут быть размещены внутри QTabWidgets без каких-либо проблем.