Дадим пользователю определить удобный размер виджета

Заметили, что во многих приложениях пользователя «разрешают» самому изменять размер виджитов. В Qt это можно сделать при помощи QSplitter. Работа с ним очень напоминает работу с QLayout, поэтому вы запросто разберётесь.
Сразу покажу конечный результат:

Я буду делать программно, т.к. в Qt Disigner это делается одним нажатием кнопки «Скомпоновать по горизонтали с разделителем» ну или по вертикали, что вам там хочется то и творите.
Для понимания процесса полезно знать как создаётся в коде.
Итак создадим 3 текстовых виджета:

QTextEdit *editor1 = new QTextEdit; QTextEdit *editor2 = new QTextEdit; QTextEdit *editor3 = new QTextEdit;

Горизонтальный разделитель:

QSplitter splitter(Qt::Horizontal);

Если же вам нужно создать вертикальный разделитель следует в качестве параметра передать Qt::Vertical.

Ну а теперь добавим в него наши виджиты:

splitter.addWidget(editor1); splitter.addWidget(editor2); splitter.addWidget(editor3);

Чтобы они не были пустыми добавьте в каждый текст при помощи метода setPlainText:

editor1->setPlainText(«Text here»);

Текст программы целиком:

#include <QtGui> int main(int argc, char *argv[]){ QApplication app(argc, argv); QTextEdit *editor1 = new QTextEdit; QTextEdit *editor2 = new QTextEdit; QTextEdit *editor3 = new QTextEdit; QSplitter splitter(Qt::Horizontal); splitter.addWidget(editor1); splitter.addWidget(editor2); splitter.addWidget(editor3); editor1->setPlainText(«Mon enfant, ma soeur,n» «Songe la douceurn» «D’aller l-bas vivre ensemble,n» «Aimer loisir,n» «Aimer et mourirn» «Au pays qui te ressemble.»); editor2->setPlainText(«My child, my sister,n» «think of the sweetnessn» «of going there to live together!n» «To love at leisure,n» «to love and to dien» «in a country that is the image of you!»); editor3->setPlainText(«Mein Kind, meine Schwester,n» «denke an den Traumn» «dort hin(unter) zu gehen um zusammenn» «zu leben und in aller Ruhe zu lieben,n» «Zu lieben und zu sterbenn» «in dem Land, das dir gleicht.»); splitter.setWindowTitle(QObject::tr(«Splitter»)); splitter.show(); return app.exec(); }

На этом всё.. Как видите простые вещи помогают значительно увеличить юзабилити программы…

Источник: malimar.ru

teamviewer-com
Не копируйте текст!