QT QScrollArea控件 使用详解

        本文详细的介绍了QScrollArea控件的各种操作,例如:新建界面源文件布局进度条宽进度条高水平滚动条值垂直滚动条值移入事件移出事件、效果图、其它文章等等操作。

        实际开发中,一个界面上可能包含十几个控件,手动调整它们的位置既费时又费力。QScrollArea是 Qt 框架中的一个小部件,用于滚动区域用于显示框架内子小部件的内容。如果小部件超出了框架的大小,视图可以提供滚动条,以便查看子小部件的整个区域。子小部件必须用setWidget()指定。

        本系列QT全面详解文章目前共有三十二篇,本系列文章较为详细的讲述了QT控件的基础操作和使用,也谢谢大家的关注、点赞、收藏。

 本文作者原创,转载请附上文章出处与本文链接。

QT QScrollArea控件 使用详解目录

1 新建界面

2 源文件

3 布局

4 进度条宽

5 进度条高

6 水平滚动条值

7 垂直滚动条值

8 移入事件

9 移出事件

10 效果图

11 其它文章


1 新建界面


2 源文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDebug>
#include <QScrollArea>
#include <QScrollBar>

#include "MouseEnterEventFilter.h"

//加入UTF-8申明,否则中文乱码 全局使用GBK文件操作因为有中文所以使用
#pragma execution_character_set("utf-8")

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_scrollArea_customContextMenuRequested(const QPoint &pos);
    void on_scrollArea_MouseEntered();
    void on_scrollArea_SlotMouseLeft();
    void on_scrollArea_horizontalValueChanged(int value);
    void on_scrollArea_verticalValueChanged(int value);
private:
    Ui::MainWindow *ui;

    QString Title;
    QString Version;
    QString BlogText;

    MouseEnterEventFilter *filter;
    int horizontalScrollBarWidth;
    int verticalScrollBarHeight;
};
#endif // MAINWINDOW_H

3 布局

        加载一张图像,scrollAreaWidgetContents 选择栅格布局

    ui->label->setMinimumWidth(2560);
    ui->label->setMinimumHeight(1600);
    ui->label->setPixmap(QPixmap("D:/zero.jpg"));

4 进度条宽

horizontalScrollBarWidth = ui->scrollArea->horizontalScrollBar()->width();
qDebug() << "Horizontal scroll bar width: " << horizontalScrollBarWidth;

5 进度条高

verticalScrollBarHeight = ui->scrollArea->verticalScrollBar()->height();
qDebug() << "Vertical scroll bar height: " << verticalScrollBarHeight;

6 水平滚动条值

connect(ui->scrollArea->horizontalScrollBar(), &QScrollBar::valueChanged, this, &MainWindow::on_scrollArea_horizontalValueChanged);
void MainWindow::on_scrollArea_horizontalValueChanged(int value)
{
    qDebug() << "水平滚动条的值: " << value;
}

7 垂直滚动条值

connect(ui->scrollArea->verticalScrollBar(), &QScrollBar::valueChanged, this, &MainWindow::on_scrollArea_verticalValueChanged);
void MainWindow::on_scrollArea_verticalValueChanged(int value)
{
    qDebug() << "垂直滚动条的值: " << value;
}

8 移入事件

connect(filter, &MouseEnterEventFilter::mouseEntered, this, &MainWindow::on_scrollArea_MouseEntered);
void MainWindow::on_scrollArea_MouseEntered()
{
    qDebug() << "鼠标移入";
}

9 移出事件

connect(filter, &MouseEnterEventFilter::mouseLeft, this, &MainWindow::on_scrollArea_SlotMouseLeft);
void MainWindow::on_scrollArea_SlotMouseLeft()
{
    qDebug() << "鼠标移出";
}

10 效果图

11 其它文章

QT TextEdit控件_双子座断点的博客-CSDN博客_qt textedit

QT QComboBox使用详解_双子座断点的博客-CSDN博客

QT QtableView操作详解_双子座断点的博客-CSDN博客_qtableview增删改查

Qt QStandardItemModel(1.超级详细用法)_双子座断点的博客-CSDN博客_qstandardmodel

Qt QStandardItemModel(2.超级详细函数)_双子座断点的博客-CSDN博客_qstandarditemmodel点击事件

QT QRadioButton使用详解_双子座断点的博客-CSDN博客_qt radiobutton

QT QLineEdit使用详解_双子座断点的博客-CSDN博客_qt qlineedit

Qt QMessageBox使用详解_双子座断点的博客-CSDN博客_qt message

QChart折线图、饼状图、条形图、曲线图_双子座断点的博客-CSDN博客_qchart样式

QChart属性详解_双子座断点的博客-CSDN博客_setanimationoptions

QCharts QValueAxis使用_双子座断点的博客-CSDN博客_qvalueaxis

Qt 5 等待提示框(开源 动态图)_双子座断点的博客-CSDN博客_qt 等待对话框

QtDataVisualization 数据3D可视化_双子座断点的博客-CSDN博客_qtdatavisualizatio

QT QSpinBox 整数计数器控件 使用详解_双子座断点的博客-CSDN博客
QT QDoubleSpinBox 浮点计数器控件(使用详解)_双子座断点的博客-CSDN博客_qdoublespinbox信号槽
QT QSlider、QHorizontalSlider、QVerticalSlider 控件 使用详解_双子座断点的博客-CSDN博客_qslider设置步长

QT QTabWidget 控件 使用详解_双子座断点的博客-CSDN博客

QT QCalendarWidget控件 使用详解_双子座断点的博客-CSDN博客

QT QStackedWidget 控件 使用详解_双子座断点的博客-CSDN博客

QT QVBoxLayout 垂直布局控件_双子座断点的博客-CSDN博客

QT QHBoxLayout 水平布局控件_双子座断点的博客-CSDN博客
QT QGridLayout网格布局控件_双子座断点的博客-CSDN博客

QT QVerticalSpacer 弹簧控件_双子座断点的博客-CSDN博客
QT QHorizontalSpacer弹簧控件_双子座断点的博客-CSDN博客
QT QLine 使用详解_双子座断点的博客-CSDN博客
QT QFontComboBox 使用详解_双子座断点的博客-CSDN博客

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在Qt中,可以使用QScrollArea类来创建一个带有滚动条的窗口部件。要设置滚动条,可以使用setVerticalScrollBarPolicy()和setHorizontalScrollBarPolicy()方法来设置垂直和水平滚动条的显示策略。例如,以下代码将创建一个QScrollArea对象,并设置垂直滚动条始终可见,水平滚动条从不可见: ``` QScrollArea *scrollArea = new QScrollArea; scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); ``` 除了设置滚动条的显示策略外,还可以使用QScrollBar类的方法来设置滚动条的其他属性,例如范围、步长、当前值等。可以使用setWidget()方法将要滚动的窗口部件设置为QScrollArea的子部件。例如,以下代码将创建一个QLabel对象,并将其设置为QScrollArea的子部件: ``` QLabel *label = new QLabel("This is a long text that needs to be scrolled."); scrollArea->setWidget(label); ``` ### 回答2: Qt QScrollArea 是一个用于添加滚动条的 Qt 小部件,可以帮助我们创建具有滚动界面的应用程序。如何设置它的滚动条呢?下面是一些常见的方法: 1.自动滚动条 默认情况下,QScrollArea 会根据内容的大小自动显示和隐藏滚动条。可以在构造函数中设置自动滚动条的属性: ```C++ QScrollArea *scrollArea = new QScrollArea; scrollArea->setWidgetResizable(true); // 让内部小部件自适应大小 scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); // 设置垂直滚动条 scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); // 设置水平滚动条 ``` 2.手动滚动条 如果想手动设置滚动条的属性,比如滚动条的范围、步长、初始位置等,需要先设置 QScrollArea 的小部件,并通过 QScrollArea 的滚动条对象去设置滚动条的属性。代码如下: ```C++ QScrollArea *scrollArea = new QScrollArea; QWidget *innerWidget = new QWidget(scrollArea); // 创建一个内部小部件 innerWidget->setFixedSize(600, 800); // 设置内部小部件的大小 scrollArea->setWidget(innerWidget); // 将内部小部件设置为滚动区的小部件 scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); // 设置垂直滚动条 scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // 不显示水平滚动条 QScrollBar *vScrollBar = scrollArea->verticalScrollBar(); // 获取垂直滚动条对象 vScrollBar->setRange(0, innerWidget->height() - scrollArea->height()); // 设置滚动条范围 vScrollBar->setSingleStep(20); // 设置步长 vScrollBar->setValue(0); // 设置初始滚动位置 ``` 3.自定义滚动条 也可以使用自定义的 QScrollBar 对象替换 QScrollArea 默认的滚动条,更加灵活地实现滚动条的外观和交互。代码如下: ```C++ QScrollArea *scrollArea = new QScrollArea; QScrollBar *vScrollBar = new QScrollBar(scrollArea); // 创建一个自定义滚动条对象 scrollArea->setVerticalScrollBar(vScrollBar); // 将自定义滚动条对象设置为垂直滚动条 scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // 不显示水平滚动条 vScrollBar->setStyleSheet("QScrollBar:vertical {background-color: #E9E9E9; width: 20px; margin: 0px 0px 0px 0px;} \ QScrollBar::handle:vertical {background-color: #A0A0A0; min-height: 20px;}"); // 自定义滚动条的外观 ``` 以上就是一些常见的 Qt QScrollArea 滚动条设置方法,根据实际需求选择适合的方法即可。 ### 回答3: Qt是一种基于C++的跨平台应用程序开发框架,它提供了丰富的图形界面组件和工具箱,方便开发者快速构建漂亮、现代化的图形界面应用程序。其中,QScrollAreaQt框架中一个非常重要的控件,用于实现滚动视图的功能。本篇文章将详细介绍如何在Qt中设置QScrollArea滚动条的方法。 QScrollAreaQt框架中用来创建可滚动的视图区域的控件,它集成了水平和垂直方向的滚动条。如果在QScrollArea中添加的内容太大而无法完全显示在视图区域内时,用户可以通过拖动滚动条来浏览和查看内容。要在Qt中创建QScrollArea控件,可以使用以下代码: ``` QScrollArea *scrollArea = new QScrollArea(this); scrollArea->setWidgetResizable(true); //设置滚动区域自适应 ``` 上述代码中,我们首先创建了一个QScrollArea对象,然后设置其大小可调整以适应其子部件。接下来,我们可以通过以下步骤设置QScrollArea的滚动条: 1. 设置滚动条范围: 滚动条的范围是指它的最小值和最大值之间的跨度。在QScrollArea中,滚动条的长度将根据其范围自动调整。要设置滚动条的范围,可以使用以下代码: ``` scrollArea->setHorizontalScrollBarRange(0, 100); //设置水平滚动范围 scrollArea->setVerticalScrollBarRange(0, 100); //设置垂直滚动范围 ``` 上述代码中,我们分别设置了水平和垂直方向的滚动条范围为0到100。 2. 设置滚动条步长: 步长是指每次滚动滑块将移动的距离。在Qt中,可以使用setSingleStep()函数来设置滚动条的步长。例如,以下代码设置水平滚动条的步长为10: ``` scrollArea->horizontalScrollBar()->setSingleStep(10); //设置水平滚动步长为10 ``` 3. 设置滚动条值: 在QScrollArea中,可以使用setValue()函数来设置滚动条的当前值。例如,以下代码设置垂直滚动条的当前值为20: ``` scrollArea->verticalScrollBar()->setValue(20); //设置垂直滚动条当前值为20 ``` 通过以上步骤,我们可以在Qt中设置QScrollArea的滚动条。同时,在实际开发中,开发人员还可以根据具体需求来设置滚动条的样式和位置等属性,以提供更好的用户体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

双子座断点

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

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

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

打赏作者

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

抵扣说明:

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

余额充值