相关疑难解决方法(0)

Qt4:将QMainWindow实例放在其他QWidget/QMainWindow中

我想将QMainWindow实例放在另一个QWidget中(例如另一个QMainWindow的centralWidget).

我想知道它为什么不起作用?QMainWindow直接从QWidget继承.将QWidget放在另一个QWidget中可以正常工作.

我经常将QMainWindow实例放在QTabBar中而没有任何问题.

ps你可能会问为什么我需要使用QMainWindow?我想使用垂直布局在1个表单中放置2个小部件.我希望这两个小部件直接在它们上面分别使用工具栏.

也许还有其他方法可以使用QtCreator将工具栏放在普通的QWidgets中?


编辑

第一个例子(工作正常)

我基于QWidget创建新的类/表单.(QtCreator根据标准模板创建3个文件*.cpp,*.h和*.ui).

类声明看起来像这样

class NotesEditor : public QWidget
{
    Q_OBJECT

public:
    explicit NotesEditor(QWidget *parent = 0);
    ~NotesEditor();

private:
    Ui::NotesEditor *ui;
};
Run Code Online (Sandbox Code Playgroud)

当我尝试使用这个小部件并将其放在另一个小部件中时,它工作正常.我使用qtcreator的"提升到..."功能 - 这里没有问题.

第二个例子(不起作用)

我基于QMainWindow创建了新的类/表单.(QtCreator根据标准模板创建3个文件*.cpp,*.h和*.ui).

类声明如下所示:

class Notes : public QMainWindow
{
    Q_OBJECT

public:
    explicit Notes(QWidget *parent = 0);
    ~Notes();

private:
    Ui::Notes *ui;
};
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试将此小部件放在另一个小部件中时,它不可见.和之前一样,我使用了qtcreator的"promote to ..."功能.

两个小部件(首先基于QWidget,第二个基于QMainWindow)具有基于标准qtcreator代码模板的相同默认结构.我在这里没有太大变化 - 只是在表单设计器中添加了一些按钮.

在第二个例子中,我尝试在类实例上使用setEnabled(true)和setVisible(true).第一个没有结果.第二个在单独的窗口中打开此小部件.


我认为最大的问题是QMainWindow是否会嵌套在另一个QWidget中.正如我在QMainWindow之前写的那样,实例可以放在QTabWidgets中而不会有任何问题.

qt qt4 qwidget qt-creator qmainwindow

7
推荐指数
2
解决办法
6857
查看次数

标签 统计

qmainwindow ×1

qt ×1

qt-creator ×1

qt4 ×1

qwidget ×1