Я хотел бы разместить экземпляр QMainWindow внутри другого QWidget (например, centralWidget другого QMainWindow).
Интересно, почему это не работает? QMainWindow наследуется напрямую от QWidget. Размещение QWidget внутри другого QWidget работает нормально.
Я часто помещаю экземпляры QMainWindow в QTabBar без каких-либо проблем.
ps Вы можете спросить, зачем мне использовать QMainWindow? Я хочу разместить 2 виджета внутри 1 формы, используя вертикальную компоновку. Я хочу, чтобы у обоих виджетов были отдельные панели инструментов непосредственно над ними.
Может быть, есть другой способ разместить панели инструментов внутри простых QWidgets с помощью QtCreator?
Изменить
Первый пример (отлично работает)
Я создаю новый класс / form на основе 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.