QT界面:tabWidget選項卡使用小結

環境:Win10+VS2015+Qt5.9.7

首先創建一個Qt GUI Application,在GUI上拖拽一個tabWidget,對象名爲tabWidget。系統會默認建立兩個選項卡,如果不用可以先刪除。
如圖:
在這裏插入圖片描述
在資源文件中添加icon與圖像資源:
在這裏插入圖片描述

tabWidget.h :

#pragma once

#include <QtWidgets/QMainWindow>
#include <QDebug>
#include <QHBoxLayout>
#include <QPushButton>
#include <QCheckBox>
#include <QRadioButton>

#include "ui_tabWidget.h"

#pragma execution_character_set("utf-8")

class tabWidget : public QMainWindow
{
	Q_OBJECT

public:
	tabWidget(QWidget *parent = Q_NULLPTR);

private:
	Ui::tabWidgetClass ui;
};

在“採集”選項中添加一些按鈕資源:

tabWidget.cpp :

#include "tabWidget.h"

tabWidget::tabWidget(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);

	QWidget *tabCalibration = new QWidget(this);
	QWidget *tabImage = new QWidget(this);

	ui.tabWidget->setTabPosition(QTabWidget::North);//設置選項卡的方位,默認在上方(東南西北)
	ui.tabWidget->addTab(tabCalibration, QIcon("Resources\\a10.ico"), tr("校準"));//在後面添加帶圖標的選項卡
	//ui.tabWidget->setIconSize(QSize(50, 25));//設置圖標的大小(選項卡的大小也會改變)
	ui.tabWidget->addTab(tabImage, QIcon(QPixmap("Resources\\a11.png").scaled(150, 120)), NULL);//添加選項卡
	ui.tabWidget->setTabToolTip(1, tr("圖像"));//鼠標懸停彈出提示
	ui.tabWidget->setTabShape(QTabWidget::Triangular);//設置選項卡的形狀 Rounded	
	ui.tabWidget->setMovable(true);
	ui.tabWidget->usesScrollButtons();//選項卡滾動
	//ui->tabWidget->removeTab(0);//移除選項卡
	//ui->tabWidget->clear();//清空選項卡

	QHBoxLayout *hlayout1 = new QHBoxLayout;
	QRadioButton *continusModeRadioButton = new QRadioButton(tr("連續"));
	QRadioButton *triggerModeRadioButton = new QRadioButton(tr("觸發"));
	hlayout1->addWidget(continusModeRadioButton);
	hlayout1->addWidget(triggerModeRadioButton);

	QHBoxLayout *hlayout2 = new QHBoxLayout;
	QPushButton *startGrabbingPushButton = new QPushButton(tr("開始"));
	QPushButton *stopGrabbingPushButton = new QPushButton(tr("停止"));
	hlayout2->addWidget(startGrabbingPushButton);
	hlayout2->addWidget(stopGrabbingPushButton);

	QHBoxLayout *hlayout3 = new QHBoxLayout;
	QCheckBox *softwareTriggerCheckBox = new QCheckBox(tr("選擇"));
	QPushButton *softwareOncePushButton = new QPushButton(tr("終止"));
	hlayout3->addWidget(softwareTriggerCheckBox);
	hlayout3->addWidget(softwareOncePushButton);

	QHBoxLayout *hlayout4 = new QHBoxLayout;
	QCheckBox *detectionCheckBox = new QCheckBox(tr("檢測"));
	hlayout4->addWidget(detectionCheckBox);

	QGridLayout *vlayout = new QGridLayout;
	vlayout->addLayout(hlayout1, 0, 0);
	vlayout->addLayout(hlayout2, 1, 0);
	vlayout->addLayout(hlayout3, 2, 0);
	vlayout->addLayout(hlayout4, 3, 0);

	QWidget *tabCollection = new QWidget;
	tabCollection->setLayout(vlayout);
	ui.tabWidget->insertTab(1, tabCollection, QIcon("Resources\\a12.ico"), tr("採集"));//插入選項卡
}

最後界面效果,如圖:
在這裏插入圖片描述
在這裏插入圖片描述

這時,可以爲選項卡中的控件資源添加槽函數:

tabWidget.h :

#pragma once

#include <QtWidgets/QMainWindow>
#include <QDebug>
#include <QHBoxLayout>
#include <QPushButton>
#include <QCheckBox>
#include <QRadioButton>
#include <QMessageBox>

#include "ui_tabWidget.h"

#pragma execution_character_set("utf-8")

class tabWidget : public QMainWindow
{
	Q_OBJECT

public:
	tabWidget(QWidget *parent = Q_NULLPTR);

private:
	Ui::tabWidgetClass ui;

	QPushButton *startGrabbingPushButton;
	QPushButton *stopGrabbingPushButton;

private slots:
	void runPushButtonSlot();

};

tabWidget.cpp :

#include "tabWidget.h"

tabWidget::tabWidget(QWidget *parent)
	: QMainWindow(parent)
{
	ui.setupUi(this);

	QWidget *tabCalibration = new QWidget(this);
	QWidget *tabImage = new QWidget(this);

	ui.tabWidget->setTabPosition(QTabWidget::North);//設置選項卡的方位,默認在上方(東南西北)
	ui.tabWidget->addTab(tabCalibration, QIcon("Resources\\a10.ico"), tr("校準"));//在後面添加帶圖標的選項卡
	//ui.tabWidget->setIconSize(QSize(50, 25));//設置圖標的大小(選項卡的大小也會改變)
	ui.tabWidget->addTab(tabImage, QIcon(QPixmap("Resources\\a11.png").scaled(150, 120)), NULL);//添加選項卡
	ui.tabWidget->setTabToolTip(1, tr("圖像"));//鼠標懸停彈出提示
	ui.tabWidget->setTabShape(QTabWidget::Triangular);//設置選項卡的形狀 Rounded	
	ui.tabWidget->setMovable(true);
	ui.tabWidget->usesScrollButtons();//選項卡滾動
	//ui->tabWidget->removeTab(0);//移除選項卡
	//ui->tabWidget->clear();//清空選項卡

	QHBoxLayout *hlayout1 = new QHBoxLayout;
	QRadioButton *continusModeRadioButton = new QRadioButton(tr("連續"));
	QRadioButton *triggerModeRadioButton = new QRadioButton(tr("觸發"));
	hlayout1->addWidget(continusModeRadioButton);
	hlayout1->addWidget(triggerModeRadioButton);

	QHBoxLayout *hlayout2 = new QHBoxLayout;
	startGrabbingPushButton = new QPushButton(tr("開始"));
	startGrabbingPushButton->setStyleSheet("background-color: rgb(0, 255, 127);");
	QObject::connect(startGrabbingPushButton, SIGNAL(clicked()), this, SLOT(runPushButtonSlot()));
	stopGrabbingPushButton = new QPushButton(tr("停止"));

	hlayout2->addWidget(startGrabbingPushButton);
	hlayout2->addWidget(stopGrabbingPushButton);

	QHBoxLayout *hlayout3 = new QHBoxLayout;
	QCheckBox *softwareTriggerCheckBox = new QCheckBox(tr("選擇"));
	QPushButton *softwareOncePushButton = new QPushButton(tr("終止"));
	hlayout3->addWidget(softwareTriggerCheckBox);
	hlayout3->addWidget(softwareOncePushButton);

	QHBoxLayout *hlayout4 = new QHBoxLayout;
	QCheckBox *detectionCheckBox = new QCheckBox(tr("檢測"));
	hlayout4->addWidget(detectionCheckBox);

	QGridLayout *vlayout = new QGridLayout;
	vlayout->addLayout(hlayout1, 0, 0);
	vlayout->addLayout(hlayout2, 1, 0);
	vlayout->addLayout(hlayout3, 2, 0);
	vlayout->addLayout(hlayout4, 3, 0);

	QWidget *tabCollection = new QWidget;
	tabCollection->setLayout(vlayout);
	ui.tabWidget->insertTab(1, tabCollection, QIcon("Resources\\a12.ico"), tr("採集"));//插入選項卡
}

void tabWidget::runPushButtonSlot()
{
	qDebug() << "第1個選項卡名稱:" << ui.tabWidget->tabText(0);
	QMessageBox::information(this, "第1個選項卡名稱:", ui.tabWidget->tabText(0));//獲取選項卡名稱
	startGrabbingPushButton->setStyleSheet("background-color: rgb(255, 100, 100);");
}

在這裏插入圖片描述

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章