QT开发中文网

qt设置qlistview的滚动条悬浮在Item上

要在Qt中将 QListView 的滚动条悬浮在其项(Item)上,可以通过自定义样式和使用布局调整来实现。以下是一个示例,展示如何设置 QListView 和滚动条,并使其看起来像悬浮在项目之上。

示例代码

#include <QApplication>
#include <QListView>
#include <QStringListModel>
#include <QScrollBar>
#include <QVBoxLayout>
#include <QWidget>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QWidget window;
    QVBoxLayout layout(&window);

    // 创建 QListView
    QListView *listView = new QListView();
    listView->setFixedSize(200, 300); // 设置大小
    
    // 创建模型并填充数据
    QStringList items;
    for (int i = 1; i <= 50; ++i) {
        items << QString("Item %1").arg(i);
    }
    
    QStringListModel *model = new QStringListModel(items);
    listView->setModel(model);

    // 自定义样式表,使滚动条看起来悬浮
    listView->setStyleSheet(
        "QListView {"
        "   border: none;"
        "}"
        "QScrollBar:vertical {"
        "   border: none;"
        "   background: rgba(0, 0, 0, 0.2);"  // 背景色
        "   width: 10px;"                       // 宽度
        "   margin: 22px 0 22px 0;"            // 上下边距,保证滚动条不贴合列表顶部和底部
        "}"
        "QScrollBar::handle:vertical {"
        "   background: rgba(255,255,255,0.5);" // 滚动滑块的颜色及透明度
        "   min-height: 30px;"                  // 滑块最小高度
        "   border-radius: 5px;"
        "}"
        );

    layout.addWidget(listView);
    
    window.setLayout(&layout);
    window.resize(250, 350);
    window.show();

    return app.exec();
}

示例说明

  1. 创建 QListView:我们创建了一个 QListView 并设置固定大小,以便容纳多个项目。

  2. 模型填充数据:使用 QStringListModel 来填充示例数据,使得列表有足够的内容以产生滚动效果。

  3. 自定义样式表

    • 我们为 QScrollBar 设置了一些属性,包括宽度、背景色和透明度。
    • 使用上下边距使得滚动条不会紧贴列表的顶端或底端,从而创造出一种悬浮的视觉效果。
    • 为竖直方向的滑块 (handle) 设置了背景颜色、最小高度和圆角,这样可以让它更加美观。
  4. 运行应用程序:该应用程序启动时会显示包含多个项目的列表视图,并且可以通过右侧的滚动条进行滑动。

你可以根据自己的需要进一步调整样式,例如改变颜色、透明度或边框等。如果你需要更复杂的效果,还可以考虑重写事件处理函数或扩展控件功能。希望这个示例能帮助你实现目标!


内容由零声教学AI助手提供,问题来源于学员提问

目录导航
  • 示例代码
  • 示例说明
  • 本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
    转载请注明出处:https://qt.0voice.com/?id=13154

    分享:
    扫描分享到社交APP
    上一篇
    下一篇
    发表列表
    游客 游客
    此处应有掌声~
    评论列表

    还没有评论,快来说点什么吧~

    联系我们

    在线咨询: 点击这里给我发消息

    微信号:3007537140

    上班时间: 10:30-22:30

    关注我们
    x

    注册

    已经有帐号?