How to make a tabbar last one ???
-
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
http://img4.hostingpics.net/pics/965793Sanstitre.png -
If you use QTabWidget, you can consider this:
void QTabWidget::setCornerWidget ( QWidget * widget, Qt::Corner corner = Qt::TopRightCorner )
-
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);
setCornerWidget(newTabButton, Qt::TopLeftCorner);
newTabButton->setCursor(Qt::ArrowCursor);
newTabButton->setAutoRaise(true);
newTabButton->setIcon(QIcon("add_tab.png"));
QObject::connect(newTabButton, SIGNAL(clicked()), this, SLOT(addNewTab()));
newTabButton->setToolTip(tr("New Tab"));
@And the important part of addNewTab slot is:
@
void EditableTabWidget::addNewTab()
{
QWidget *widget = new QWidget(this);
addTab(widget,"");
}@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
{
showMaximized();
setTabsClosable(true);
setMovable(true);
QWidget *wid1 = new QWidget;
QWidget *wid2 = new QWidget;
addTab(wid1, "wid1");
addTab(wid2, "+");
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");
setCurrentIndex(count()-2);
}
}
void MytabWidget::fermerautreonglet(int index)
{
if (count() > 1)
{
removeTab(index);
}
else
{
qApp->quit();
}
}@
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 -
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.