я вижу это QMdiArea
имеет режим просмотра с вкладками. Я хочу иметь возможность разделить главное окно с двумя QMdiArea
виджеты и возможность перетаскивать вкладки между каждым из них. Я уже сделал это с помощью простого QTabWidget
где я могу установить пользовательскую панель вкладок. В то же время я хочу переключиться QMdiArea
режим просмотра, таким образом, используя QTabWidget
это не вариант для меня. Но я не вижу никаких способов установить панель вкладок внутри QMdiArea
, У меня все еще есть надежда, что это могло быть сделано. Кто-нибудь может предложить что-то?
После некоторого времени исследований я могу предложить следующее решение. Вы должны сделать новый класс наследования QMdiArea
, Установите режим просмотра на TabbedView
сделать стандарт QTabBar
быть построенным в QMdiArea
, Тогда возьми всех детей и найди QTabBar
виджет с QString(QObject::metaObject()->className()) == "QTabBar"
, Скрыть. Вы получите пустую область над документом в TabbedView
Режим. Создайте свою собственную панель вкладок и перерисуйте ее в свою пользовательскую область mdi. Подключите сигналы и слоты, которые запускаются и используются, когда активируются подокна и вкладки. Вы можете иметь свою собственную панель вкладок в качестве члена класса вашей пользовательской области MDI.
Если вы нашли этот пост полезным, пожалуйста, проголосуйте за него. Благодарю.
Некоторый код например.
Ищу стандарт QTabBar
в пользовательской области mdi в своем конструкторе:
m_pMdiAreaTabBar = NULL;
m_pMdiArea->setViewMode(QMdiArea::TabbedView);
QObjectList listChildren = m_pMdiArea->children();
for (QObjectList::Iterator i = listChildren.begin(); i != listChildren.end(); ++i)
{
if (QString((*i)->metaObject()->className()) == "QTabBar")
{
m_pMdiAreaTabBar = dynamic_cast<QTabBar*>(*i);
break;
}
}
Reparent:
m_pTabBar->setParent(m_pMdiArea);
Прячется:
if (m_pMdiAreaTabBar != 0) m_pMdiAreaTabBar->hide();
сигналы & Используемые слоты: QMdiArea::subWindowActivated(QMdiSubWindow*)
, QTabBar::currentChanged(int)
Задача ещё не решена.
Других решений пока нет …