Kann ich hinzufügen, einige Widgets wie QLabel und QPushButton in eine QTabWidget?Widgets in eine QTabWidget
Eigentlich möchte ich so etwas wie dies zu tun:
I C bin mit ++ und Qt.
Dank
Kann ich hinzufügen, einige Widgets wie QLabel und QPushButton in eine QTabWidget?Widgets in eine QTabWidget
Eigentlich möchte ich so etwas wie dies zu tun:
I C bin mit ++ und Qt.
Dank
Es ist möglich, nur QTabWidget::setCornerWidget zu verwenden.
Schnell Beispiel:
QWidget* pTabCornerWidget = new QWidget(this);
QLabel* pLabelTime = new QLabel(pTabCornerWidget);
pLabelTime->setText("10:22:20");
QPushButton* pButton = new QPushButton(pTabCornerWidget);
pButton->setText("?");
pButton->setMaximumSize(QSize(25, 25));
QHBoxLayout* pHLayout = new QHBoxLayout(pTabCornerWidget);
pHLayout->addWidget(pLabelTime);
pHLayout->addWidget(pButton);
mUI.tabWidget->setCornerWidget(pTabCornerWidget, Qt::TopRightCorner);
Wenn Sie diese Sachen tun wollen, empfehle ich Ihnen QTabBar
anstelle von QTabWidget
. Zum Beispiel kann der Code sein (denken Sie daran, dass es nur ein sehr einfaches Beispiel):
// Here some first widget
QWidget *wid1 = new QWidget(this);
QHBoxLayout *wid1Lay = new QHBoxLayout(wid1);
wid1Lay->addWidget(new QLabel(tr("Widget1")));
// Here some second widget
QWidget *wid2 = new QWidget(this);
QHBoxLayout *wid2Lay = new QHBoxLayout(wid2);
wid2Lay->addWidget(new QLabel(tr("Widget2")));
// Here some third widget
QWidget *wid3 = new QWidget(this);
QHBoxLayout *wid3Lay = new QHBoxLayout(wid3);
wid3Lay->addWidget(new QLabel(tr("Widget3")));
// Here your Tab bar with only bars
QTabBar *bar = new QTabBar(this);
bar->addTab("One");
bar->addTab("Two");
bar->addTab("Three");
// Here some label (for example, current time) and button
QLabel *lab = new QLabel(tr("Some text"), this);
QPushButton *but = new QPushButton(tr("Push"), this);
// Main layouts
QVBoxLayout *vLay = new QVBoxLayout(ui->centralWidget);
QHBoxLayout *hLay = new QHBoxLayout();
vLay->addLayout(hLay);
hLay->addWidget(bar);
// Spacer for expanding left and right sides
hLay->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum));
hLay->addWidget(lab);
hLay->addWidget(but);
vLay->addWidget(wid1);
vLay->addWidget(wid2);
vLay->addWidget(wid3);
// Some simple connect with lambda for navigation
connect(bar, &QTabBar::currentChanged, [=] (int index) {
wid1->setVisible(false);
wid2->setVisible(false);
wid3->setVisible(false);
switch(index) {
case 0: wid1->setVisible(true);
break;
case 1: wid2->setVisible(true);
break;
case 2: wid3->setVisible(true);
break;
default:{}
}
});
emit bar->currentChanged(0);
Eigentlich, ich glaube nicht, dass ich es für eine QTabBar austauschen kann, weil mein QTabWidget bereits (mit vielen Funktionen) implementiert ist, aber danke für deine Antwort, es war sehr hilfreich. – KelvinS
@someoneinthebox, können Sie ein ['QStackedWidget'] (http://doc.qt.io/qt-5/qstackedwidget.html) verwenden, um ein Widget pro Zeit zu zeigen, anstatt die Widgets selbst zu verstecken und anzuzeigen. Sie können sich einfach direkt mit dem [setCurrentIndex() '] (http://doc.qt.io/qt-5/qstackedwidget.html#currentIndex-prop) Slot verbinden. – Mike
@Mike, oh, hab es. Sehr nützlich. – someoneinthebox
Genau das habe ich gesucht. Vielen Dank. – KelvinS