Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct
How to make a tabbar last one ???
hi I have a QTabBar and i'd like to have a tab that should be like the last tab in a Browser (the addTab "+") but I don't know how to make it the last one (especially when the others move )
thanks for your help :)
There is another way, but I think "this":http://doc.qt.nokia.com/latest/qtabbar.html#setTabButton should do the trick too. If not, I'll post my version tomorrow if I don't forget.
thank you HuXiKa but i think that you didn't understand my question i'd like to have this
I understood, and I have a solution, I'll post it :) Although, in my solution the "+" button is the first tab, but it shouldn't be hard to change it.
dbzhang800 last edited by
If you use QTabWidget, you can consider this:
void QTabWidget::setCornerWidget ( QWidget * widget, Qt::Corner corner = Qt::TopRightCorner )
Thank you very much HuXiKa
1+1=2 : setCornerWidget is not a solution because the widget will be in the top right in the corner not near other tabs
So, as I'm looking at it, my solution is what 1 + 1 = 2 said (and even more complicated, because I subclassed QTabWidget to have editable tab names):
QToolButton *newTabButton = new QToolButton(this);
QObject::connect(newTabButton, SIGNAL(clicked()), this, SLOT(addNewTab()));
And the important part of addNewTab slot is:
QWidget *widget = new QWidget(this);
The difference here is that the button is in the top left corner, so it's not that far from the tabs.
If I remember correctly when I tried to solve this problem this was the easiest way, it's complicated to achive the behavior that you want. But google is your friend, try to look for a solution :)
yes I tried this code but the problem is that the button is on the left side and if we change
@setCornerWidget(newTabButton, Qt::TopLeftCorner);@ to @setCornerWidget(newTabButton, Qt::TopRightCorner);@ it will be in top right so I don't think that is a solution
but i'm trying some codes and like this
@MytabWidget::MytabWidget() : QTabWidget
QWidget *wid1 = new QWidget;
QWidget *wid2 = new QWidget;
tabBar()->setTabButton(1, QTabBar::RightSide, 0);
connect(this, SIGNAL(currentChanged(int)), this, SLOT(tabChanged(int))); connect(this, SIGNAL(tabCloseRequested(int)), this, SLOT(fermerautreonglet(int)));
@void MytabWidget::tabChanged(int idx)
if (idx == count()-1)
QWidget *wid3 = new QWidget;
insertTab(count()-1, wid3, "new tab");
void MytabWidget::fermerautreonglet(int index)
if (count() > 1)
I think that this this code is the best but my problem is when tabs move the "+" tab will lose the last position but i think there is a class that can help us to resolve this problem wich is "QStyleOptionTab":http://doc.trolltech.com/4.7/qstyleoptiontab.html
in Public Variables we have TabPosition position i think that this can do it
but I'm a newbie and i didn't know how to use it i need your help! thanks
maxim.prishchepa last edited by
In my project i have some model on the basic of witch i do reinit a tabBar (delete all tabs, and create them again), then if my model talk me what in model no one item to visualize, i create an "empty" tab (like in browser), and at end, i create "Add" tab. And i have connect with TabBar and my class, and when user push at some of tabs, i get a signal, then in connected with this signal slot's i analyze if this tab bar is "Add", then create a new item at model.