LINUX.ORG.RU

qt-mdi-синхронизация_меню


0

2

Как принято синхронизировать меню и панель инструментов главного окна и документа. Например, имеется класс Docum, в котором можно отформатировать одно слово, например жирно и обычно. Так вот, когда объект типа Docum становиться активным в MDI-приложении хотелось бы, чтобы кнопка жирно в меню и панели инструментов стала нажатой или отжатой в зависимости от того какой вид имеет слово в окне (жирный или нормальный). Docum позволяет считать текущее состояния шрифта bool getStatusBold().

Меню и панель инструментов главного окна принято синхронизировать руками. Сделай себе какой-нибудь MVC. Не храни состояние документа в элементах управления. Пускай в классе документа есть булева переменная «жирно». При изменении этой переменной должны обновляться все элементы, которые отображают состояние жирноты.

pathfinder ★★★★
()
Ответ на: комментарий от pathfinder

Тьфу ты, MDI. Тогда, при смене активного документа происходит обновление состояния всех контролов.

автоматом оно не происходит. И какие конкретные события или сигналы, соответствующие смене активного окна нужно использовать чтобы обновить все «контролы»? В моем случае состояние кнопки нажата/отжата.

scireseacher
() автор топика
Ответ на: комментарий от scireseacher

И какие конкретные события или сигналы, соответствующие смене активного окна нужно использовать

Я сам никогда не писал MDI. Но неужели так трудно найти?

void QMdiArea::subWindowActivated ( QMdiSubWindow * window ) [signal]

QMdiArea emits this signal after window has been activated. When window is 0, QMdiArea has just deactivated its last active window, and there are no active windows on the workspace.

See also QMdiArea::activeSubWindow().

pathfinder ★★★★
()
Ответ на: комментарий от scireseacher

Тут дело касается не поддержки конкретной реализацией ноклой от версии к версии, а всей концепции в целом:

http://web.archive.org/web/20080530025541/http://pixelcentric.net/x-shame/doc...

Мелкософт, например, уже давно свои офисы делает по SDI

yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

> От MDI же отказываются

ТС всегда может сделать QMdiArea::setViewMode(QMdiArea::TabbedView)

dt1 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.