【Qt 学习笔记】Qt常用控件 | 容器类控件 | Tab Widget的使用及说明


  • 博客主页:Duck Bro 博客主页
  • 系列专栏:Qt 专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

Qt常用控件 | 容器类控件 | Tab Widget的使用及说明

文章编号:Qt 学习笔记 / 40


一、QTabWidget介绍

1. 简介

QTabWidget是Qt中的一个小部件,它提供了一个选项卡窗口小部件,可以用于创建多个选项卡,并在每个选项卡中显示不同的内容。

QTabWidget可以用来创建一个选项卡式的界面,每个选项卡可以包含不同的小部件,如文本框、按钮、列表等。用户可以通过点击选项卡切换显示内容。

在这里插入图片描述

2. 核心属性

属性说明
tabPosition标签页所在的位置.
• North 上方
• South 下方
• West 左侧
• East 右侧
currentIndex当前选中了第几个标签页 (从 0 开始计算)
currentTabText当前选中的标签页的⽂本
currentTabName当前选中的标签页的名字
currentTabIcon当前选中的标签页的图标
currentTabToolTip当前选中的标签页的提⽰信息
tabsCloseable标签页是否可以关闭
movable标签页是否可以移动

3. 核心信号

属性说明
currentChanged(int)在标签页发生切换时触发, 参数为被点击的选项卡编号.
tabBarClicked(int)在点击选项卡的标签条的时候触发. 参数为被点击的选项卡编号.
tabBarDoubleClicked(int)在双击选项卡的标签条的时候触发. 参数为被点击的选项卡编号.
tabCloseRequest(int)在标签页关闭时触发. 参数为被关闭的选项卡编号.

二、QTabWidget的使用(代码示例)

1. 标签页管理多组控件

  1. 在界面中创建Tab Widget控件,和两个按钮,如下图所示
    在这里插入图片描述
  2. 在每个界面中创建一个标签,显示对应页数
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    QLabel *label =new QLabel(ui->tab);
    label->setText("标签页1");
    label->resize(100,50);

    QLabel *label2 =new QLabel(ui->tab_2);
    label2->setText("标签页2");
    label2->resize(100,50);


}
  1. 编写增删按钮槽函数,以及TabWidget控件的选中时打印选中的下标
void Widget::on_pushButton_clicked()
{
    //获取到现在标签的数量
    int count = ui->tabWidget->count();
    //指定一个QWidget
    QWidget *w =new QWidget();
    //创建一个新的标签页,指定这个标签页的标题,如Tab 1
    ui->tabWidget->addTab(w,QString("Tab ")+QString::number(count+1));
    //在新建的标签页中添加标签
    QLabel *label =new QLabel(w);
    label->setText(QString("标签页")+QString::number(count+1));
    label->resize(100,50);
    //设置新建的标签页为选中状态
    ui->tabWidget->setCurrentIndex(count);
}

void Widget::on_pushButton_2_clicked()
{
    //获取到选中的标签页下标
    int index = ui->tabWidget->currentIndex();
    //删除选中的标签页
    ui->tabWidget->removeTab(index);
}

void Widget::on_tabWidget_currentChanged(int index)
{
    qDebug()<<"当前选中的标签页下标为:"<<index;
}

• 使用 count() 获取到标签页的个数.
• 使用 addTab 新增标签页.
• 使用 removeTab 删除标签页.
• 使用 currentIndex 获取到当前标签页的下标.
• 使用 setCurrentIndex 切换当前标签页.

  1. 运行代码,查看结果

在这里插入图片描述

• 点击新建标签页, 可以创建出新的标签.
• 点击删除当前标签页, 可以删除标签.
• 切换标签页时, 可以看到 qDebug 打印出的标签页编号.


在这里插入图片描述

  • 31
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Qt使用OpenGLWidget件显示.tif图像,你可以按照以下步骤进行操作: 1. 确保你的项目已经包含了OpenGL模块。在Qt项目的.pro文件中添加以下行: ``` QT += opengl ``` 2. 创建一个自定义的OpenGLWidget子类,用于显示图像。首先,在项目中创建一个新的类文件,例如"ImageWidget.h"和"ImageWidget.cpp"。 3. 在ImageWidget.h文件中,定义一个继承自QOpenGLWidget的ImageWidget类,并重新实现以下方法: ```cpp #ifndef IMAGEWIDGET_H #define IMAGEWIDGET_H #include <QOpenGLWidget> #include <QOpenGLFunctions> #include <QImage> class ImageWidget : public QOpenGLWidget, protected QOpenGLFunctions { Q_OBJECT public: ImageWidget(QWidget *parent = nullptr); ~ImageWidget(); void setImage(const QString& imagePath); protected: void initializeGL() override; void paintGL() override; void resizeGL(int w, int h) override; private: QImage m_image; }; #endif // IMAGEWIDGET_H ``` 4. 在ImageWidget.cpp文件中,实现ImageWidget类的方法: ```cpp #include "ImageWidget.h" ImageWidget::ImageWidget(QWidget *parent) : QOpenGLWidget(parent) { } ImageWidget::~ImageWidget() { } void ImageWidget::setImage(const QString& imagePath) { m_image = QImage(imagePath); update(); } void ImageWidget::initializeGL() { initializeOpenGLFunctions(); } void ImageWidget::paintGL() { glClearColor(0, 0, 0, 1); glClear(GL_COLOR_BUFFER_BIT); if (!m_image.isNull()) { glLoadIdentity(); glOrtho(0, width(), height(), 0, -1, 1); glRasterPos2i(0, 0); glPixelZoom(1, -1); glDrawPixels(m_image.width(), m_image.height(), GL_RGBA, GL_UNSIGNED_BYTE, m_image.constBits()); } } void ImageWidget::resizeGL(int w, int h) { glViewport(0, 0, w, h); } ``` 5. 在你的主窗口或其他需要显示图像的窗口中,使用ImageWidget件,并调用setImage方法设置图像路径: ```cpp #include "MainWindow.h" #include "ui_MainWindow.h" #include "ImageWidget.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); ImageWidget* imageWidget = new ImageWidget(this); imageWidget->setImage("your_tif_image.tif"); ui->verticalLayout->addWidget(imageWidget); // 将ImageWidget添加到布局中 } MainWindow::~MainWindow() { delete ui; } ``` 请确保将"your_tif_image.tif"替换为实际的图像路径。这样,你就可以使用OpenGLWidget件在Qt中显示.tif图像了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Duck Bro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值