C++ 如何创建一个小部件类,该小部件在文本编辑上方具有QTextEdit和QToolBar

C++ 如何创建一个小部件类,该小部件在文本编辑上方具有QTextEdit和QToolBar,c++,qt,layout,toolbar,qtextedit,C++,Qt,Layout,Toolbar,Qtextedit,我的目的是创建一个带有reach文本控件的QTextEdit。我想放在工具栏中的控件。但是我很难控制布局。问题是,如果我在一个有工具栏的QWidget(我的类继承了QWidget)中放置一个QTextEdit,则会出现重叠 我尝试的另一种方法是:我的类继承QTextEdit,并且它有一个工具栏。现在布局不同了,但不是我想要的。请帮我看一个漂亮的视图。将工具栏和QTextEdit放在继承QWidget的类中的布局中。布局(请参见)将项目相对放置,确保它们不会重叠。如果不使用布局,则所有子部件都将创

我的目的是创建一个带有reach文本控件的QTextEdit。我想放在工具栏中的控件。但是我很难控制布局。问题是,如果我在一个有工具栏的QWidget(我的类继承了QWidget)中放置一个QTextEdit,则会出现重叠


我尝试的另一种方法是:我的类继承QTextEdit,并且它有一个工具栏。现在布局不同了,但不是我想要的。请帮我看一个漂亮的视图。

将工具栏和QTextEdit放在继承QWidget的类中的布局中。布局(请参见)将项目相对放置,确保它们不会重叠。如果不使用布局,则所有子部件都将创建在位置(0,0)处,即父部件的左上角

QWidget* widget = new QWidget();
QToolBar* toolbar = new QToolBar(widget);
QTextEdit* textedit = new QTextEdit(widget);

QVBoxLayout* layout = new QVBoxLayout(widget);
layout->addWidget(toolbar);
layout->addWidget(textedit);

瞧,小部件不再重叠。

将工具栏和QTextEdit放在继承QWidget的类中的布局中。布局(请参见)将项目相对放置,确保它们不会重叠。如果不使用布局,则所有子部件都将创建在位置(0,0)处,即父部件的左上角

QWidget* widget = new QWidget();
QToolBar* toolbar = new QToolBar(widget);
QTextEdit* textedit = new QTextEdit(widget);

QVBoxLayout* layout = new QVBoxLayout(widget);
layout->addWidget(toolbar);
layout->addWidget(textedit);

瞧,这些小部件不再重叠了。

不久前,我编写了自己的文本编辑器,我做得有点像你。我使用一个QMainwWindow作为主窗口,并使用一个带有布局(QVBoxLayout)的简单QWidget作为中心小部件。在这个布局中,我放置了一个QTabWidget,我可以在其中添加我自己的文本编辑(源自QTextEdit)作为新选项卡

我有三个工具栏,我只是简单地添加到主窗口。因此,它们可以在我自己编写的QTextEdit中自由移动

我还使用DockWidgets添加了一个文件资源管理器和一个日志窗口


不久前,我编写了自己的文本编辑器,我做得有点像你。我使用一个QMainwWindow作为主窗口,并使用一个带有布局(QVBoxLayout)的简单QWidget作为中心小部件。在这个布局中,我放置了一个QTabWidget,我可以在其中添加我自己的文本编辑(源自QTextEdit)作为新选项卡

我有三个工具栏,我只是简单地添加到主窗口。因此,它们可以在我自己编写的QTextEdit中自由移动

我还使用DockWidgets添加了一个文件资源管理器和一个日志窗口


是的,谢谢,还有+1。只是我不知道工具栏可以放在布局中:)。是的,谢谢和+1。只是我不知道工具栏可以放在一个布局中:)。是的,如果你想要一个文本编辑器,使用主窗口是一个好方法。但是我的应用程序有一个主窗口,我不能使用QMainWindow,因此我不能使用setCentralWidget。无论如何,谢谢你和+1给出了一个合理的答案。是的,如果你想要一个文本编辑器,使用主窗口是一个好方法。但是我的应用程序有一个主窗口,我不能使用QMainWindow,因此我不能使用setCentralWidget。无论如何,谢谢你和+1给出了一个合理的答案。