如何创建一个类,它是一个在文本编辑上方具有QTextEdit和QToolBar的小部件

时间:2010-09-02 13:07:57

标签: c++ qt layout toolbar qtextedit

我的目的是创建一个带有覆盖文本控件的QTextEdit。我想要放在工具栏中的控件。但是我在控制布局方面遇到了困难。问题是,如果我将QTextEdit放在QWidget(我的类继承了QWidget)中,那么重叠就会有一个工具栏。

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

2 个答案:

答案 0 :(得分:3)

将工具栏和QTextEdit放在继承QWidget的类中的布局中。布局(参见QVBoxLayout)将项目相对于彼此定位,确保它们不重叠。如果不使用布局,则将在位置(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);

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

答案 1 :(得分:1)

前段时间我写了自己的文本编辑器,我做的有点像你。我使用QMainwWindow作为main_window和我的中心小部件一个带有布局(QVBoxLayout)的简单QWidget。在那个布局中,我放置了一个QTabWidget,我可以在其中添加我自己的text_edit(从QTextEdit派生)作为新标签。

我有三个工具栏,我只是添加到主窗口。因此,他们可以在我自己写的QTextEdit周围自由移动。

我还使用DockWidgets添加文件浏览器和日志窗口。

alt text