[Interest] Tabbed Dock Widgets
Ben Swerts
benswerts at telenet.be
Sat Jul 26 00:07:54 CEST 2014
Hi Graham,
Have you tried forcing a Qt::QueuedConnection for the connect calls? That
way the QTabBar has a higher chance of being set up completely before the
slot is run.
Greets,
Ben
> -----Original Message-----
> From: interest-bounces+benswerts=telenet.be at qt-project.org
> [mailto:interest-bounces+benswerts=telenet.be at qt-project.org] On Behalf
> Of Graham Labdon
> Sent: Friday, July 25, 2014 11:32
> To: Paul Miller; interest at qt-project.org
> Subject: Re: [Interest] Tabbed Dock Widgets
>
> Ok I can now demonstrate my problem -
> In my class I have
> TabWidgetTest::TabWidgetTest(QWidget *parent)
> : QMainWindow(parent)
> {
> ui.setupUi(this);
>
> m_dockWidgets.append(new QDockWidget("Dock 1",this));
> m_dockWidgets.last()->setWidget(new Dock1Content(this));
> addDockWidget(Qt::BottomDockWidgetArea,m_dockWidgets.last());
> m_dockWidgets.last()-
> >setAllowedAreas(Qt::BottomDockWidgetArea);
>
> m_action1 = m_dockWidgets.last()->toggleViewAction();
> m_action1->setData(0);
> connect(m_action1,&QAction::toggled,this,&TabWidgetTest::onView
> Toggled);
>
> m_dockWidgets.append(new QDockWidget("Dock 2",this));
> m_dockWidgets.last()->setWidget(new Dock2Content(this));
> addDockWidget(Qt::BottomDockWidgetArea,m_dockWidgets.last());
> m_dockWidgets.last()-
> >setAllowedAreas(Qt::BottomDockWidgetArea);
>
> m_action2 = m_dockWidgets.last()->toggleViewAction();
> m_action2->setData(1);
> connect(m_action2,&QAction::toggled,this,&TabWidgetTest::onView
> Toggled);
>
> tabifyDockWidget(m_dockWidgets[0],m_dockWidgets[1]);
> }
>
> In the slot I have
> {
> QList<QTabBar*> tabBarList = findChildren<QTabBar*>();
> QTabBar* tabBar = NULL;
> if (!tabBarList.isEmpty())
> {
> tabBar = tabBarList.at(0);
> qDebug() << "Count = " << tabBar->count();
> }
> else
> {
> qDebug() << "No tab bar";
> }
>
> QAction* action = dynamic_cast<QAction*>(sender());
>
> if (action)
> {
> int data = action->data().toInt();
> qDebug() << checked << " " << data;
> }
> qDebug() << "";
> // m_dockWidgets[data]->raise();
> //}
> }
>
> When the slot is called the tabbed widget that is to be added has not yet
> been added to the tab bar. and I cannot see a way of catching when a
widget
> has been added to the tab bar.
>
> Is there a way in which this can be achieved?
>
> Thanks
More information about the Interest
mailing list