Important: Please read the Qt Code of Conduct -

[SOLVED] Empty Tab added in QTabdWidget after adding dynamic tab in QTabWidget

  • I sub-class QTabWidget(myTabWdiget) and add this into mainwindow by promoting QTabWidget to myTabWidget. This works fine. There are no extra tabs added.

    I am adding tabs to myTabWidget dynamically in my program.

    [CODE] ui->myWidgetDays->addTab(new QWidget(),"Date");[/CODE]
    One [extra] empty tab is added into myTabWidget after adding all my [desired] dynamic tabs. This empty tab has index 0;

    I am only adding tabs in my program at one place. I have no idea why it is happening.


  • Hi,
    Designer will probably add a signal tab to your QTabWidget derived class so your tabwidget already contains a tab. Maybe try to remove it in designer or when you start filling your tabs first check the number of tabs and remove all if any exist?

  • Thanks for your reply.

    There are no default tabs added in my application. Count of tabs before adding a tab, from my application, is zero.

    qDebug()<<"Count of existing tabs: "<<ui->tabWidgetDays->count()<<", "<<ui->tabWidgetDays->currentIndex()<<endl;
    ui->tabWidgetDays->addTab(new QWidget(),dayTab );
    qDebug()<<"Count of existing tabs: "<<ui->tabWidgetDays->count()<<", Tab added for: "<<dayTab<<endl;

    OUTPUT of the above lines is :
    Count of existing tabs: 0 , -1
    TabIndex : 0 [See Note]
    Count of existing tabs: 1 , Tab added for: ""
    Count of existing tabs: 1 , 0
    Count of existing tabs: 2 , Tab added for: "Tue Jul 9 2013"
    Count of existing tabs: 2 , 0
    Count of existing tabs: 3 , Tab added for: "Fri Jun 28 2013"
    Count of existing tabs: 3 , 0
    Count of existing tabs: 4 , Tab added for: "Wed Jun 26 2013"
    Count of existing tabs: 4 , 0
    Count of existing tabs: 5 , Tab added for: "Sat Jun 22 2013"

    @ connect (ui->tabWidgetDays, SIGNAL(currentChanged(int)),this, SLOT(tabIndexChanged(int)));@
    [NOTE] After printing first lines my signal/slot is executed and this line is printed. This line is not printed for remaining tab creation.

    Any idea why this is happening?

  • bq. There are no default tabs added in my application

    That's odd, because my code agrees with what Jeroen said - I mean I had a dummy page which I had to delete :-

    @// Delete the dummy page inserted by the Designer code
    if( a_pParentTabControl->tabText( 0 ) == "<empty>" )
    QWidget * pPage = a_pParentTabControl->widget( 0 );
    a_pParentTabControl->removeTab( 0 );
    delete pPage;

    ...though I changed it to be explicit by giving it a name.

    Nevertheless your test code appears to contradict us :-)

    re: [NOTE] this make sense - the tab index is only changed once, when the first page is added. After that, the tab index remains at 0 even though you add new pages.

  • Thanks for your reply.
    There was a mistake in my logic, got the logic right, and now my tabs are added correctly.

    I'll check your code and update later.

    Thanks once again

Log in to reply