我的目的是创建一个带有覆盖文本控件的QTextEdit。我想要放在工具栏中的控件。但是我在控制布局方面遇到了困难。问题是,如果我将QTextEdit放在QWidget(我的类继承了QWidget)中,那么重叠就会有一个工具栏。
我尝试的另一种方法如下:我的类继承了QTextEdit,它有一个工具栏。现在布局不同但不是我想要的。请帮我看一个好看的。
答案 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添加文件浏览器和日志窗口。