Я хотел бы разместить экземпляр 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 можно без проблем размещать внутри QTabWidget.