QT输入窗口之QScrollBar(滚动条)

QScrollBar 如果对您有用记得点赞哦)

QScrollBar 继承 QAbstractSlider。QScrollBar 小部件提供垂直或水平滚动条,允许用户访问比用于显示文档的小部件大的文档部分。它提供了用户在文档中的当前位置和可见文档数量的可视化指示。滚动条通常配有其他控件,可以实现更精确的导航(这里指浏览到精确的位置)。
例子
创建水平和垂直滚动条,使用 QScrollBar 类实例化两个控件,一个是水平滚动条,另一个是垂直滚动条,中间用一个标签文本来显示。 (本例只创建实例,不对效果进行细化(请注意:一般水平或垂直滚动条都用 QScrollArea 搭配其他控件使用,不单独使用 QScrollBar 去创建滚动条,有些控件“自带”滚动条,例如 QListWidget 等,都可以用 QScrollArea 来设置它的属性)。
头文件“mainwindow.h”具体代码如下。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QScrollBar>
#include <QLabel>

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private:
    /* 声明水平滚动条对象 */
    QScrollBar *horizontalScrollBar;

    /* 声明垂直滚动条对象 */
    QScrollBar *verticalScrollBar;

    /* 声明标签文本 */
    QLabel *label;
};
#endif // MAINWINDOW_H

源文件“main.cpp”具体代码如下。

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    /* 设置主窗体大小,位置 */
    this->setGeometry(0,0,800,480);

    /* 实例化水平滚动条及设置位置大小 */
    horizontalScrollBar = new QScrollBar(Qt::Horizontal, this);
    horizontalScrollBar->setGeometry(0, 450, 800, 30);

    /* 实例化垂直滚动条及设置位置大小 */
    verticalScrollBar = new QScrollBar(Qt::Vertical, this);
    verticalScrollBar->setGeometry(770, 0, 30, 480);

    /* 实例化,标签文本 */
    label = new QLabel(this);
    /* 设置文本 */
    label->setText("这是一个测试");
    /* 设置位置大小 */
    label->setGeometry(300, 200, 100, 20);
}

MainWindow::~MainWindow()
{
}

运行效果:
在这里插入图片描述

Qt中,要在Widget窗口上添加滚动条,通常是在需要垂直或水平滑动内容的QScrollArea组件中。以下是如何在QWidget中添加滚动条的基本步骤: 1. 导入所需的库: ```cpp #include <QMainWindow> #include <QWidget> #include <QVBoxLayout> #include <QScrollBar> #include <QScrollArea> ``` 2. 创建窗口和布局: ```cpp class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); }; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), mainLayout(new QVBoxLayout) { QWidget *centralWidget = new QWidget; centralWidget->setLayout(mainLayout); // 将scrollArea添加到mainLayout QScrollArea *scrollArea = new QScrollArea(this); scrollArea->setWidgetResizable(true); // 允许内部内容大小调整 // 设置scrollArea的内容 QWidget *content = new QWidget(); QVBoxLayout *contentLayout = new QVBoxLayout(content); content->setLayout(contentLayout); for (int i = 0; i < 50; ++i) { // 增加一些内容以便有东西可以滚动 QLabel *label = new QLabel("Content Item " + QString::number(i), content); contentLayout->addWidget(label); } scrollArea->setWidget(content); mainLayout->addWidget(scrollArea); } ``` 在这个例子中,`QScrollArea`包裹了一个`QWidget`,内容区域里的布局会随着滚动条的移动而改变。 如果你想要添加垂直滚动条或水平滚动条,可以在创建QScrollArea时指定方向: ```cpp // 添加垂直滚动条 QScrollBar::Orientation orientation = QScrollBar::Vertical; scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); scrollArea->setVerticalScrollBarPolicy(orientation == QScrollBar::Vertical ? Qt::ScrollBarAsNeeded : Qt::ScrollBarAlwaysOff); scrollArea->setWidgetResizable(true); // 或者添加水平滚动条 orientation = QScrollBar::Horizontal; scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); scrollArea->setHorizontalScrollBarPolicy(orientation == QScrollBar::Horizontal ? Qt::ScrollBarAsNeeded : Qt::ScrollBarAlwaysOff); scrollArea->setWidgetResizable(true); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

点灯大神

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

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

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

打赏作者

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

抵扣说明:

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

余额充值