Как создать класс, который является виджетом, у которого есть QTextEdit и QToolBar над редактированием текста - PullRequest
0 голосов
/ 02 сентября 2010

Мое намерение - создать QTextEdit с его текстовыми элементами управления досягаемости. Элементы управления, которые я хочу поместить в панель инструментов. Но у меня трудности с управлением макетом. Проблема заключается в том, что если я помещаю QTextEdit в QWidget (мой класс наследует QWidget), который имеет панель инструментов, то это перекрытие.

Другой способ, которым я попробовал, заключался в следующем: мой класс наследует QTextEdit и имеет панель инструментов. Теперь макет другой, но не то, что я хочу. Пожалуйста, помогите мне иметь хороший вид.

Ответы [ 2 ]

3 голосов
/ 02 сентября 2010

Поместите вашу панель инструментов и 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 голос
/ 02 сентября 2010

Некоторое время назад я написал свой собственный текстовый редактор и сделал это немного как ты. Я использую QMainwWindow в качестве main_window и в качестве центрального виджета простой QWidget с макетом (QVBoxLayout) на нем. В этом макете я поместил QTabWidget, в который я мог бы добавить свой собственный text_edit (производный от QTextEdit) в качестве новых вкладок.

У меня было три панели инструментов, которые я просто добавил в главное окно. Так что они могут свободно перемещаться по моему самопровозглашенному QTextEdit.

Я также использовал DockWidgets для добавления проводника и окна регистрации.

alt text

...