QListView 当列表为空时显示文本

2023-11-25

当 QListView 中没有项目时,我想显示一些文本(例如“没有项目”)。
我尝试重写QListView的paintEvent方法,但没有任何效果。


下面的代码展示了一种简单的方法,通过重载paintEvent视图的方法。文本的绘制可能应该使用样式机制来获取字体和笔/画笔,但我将把它留给敏锐的编辑器来获取。

它使用 Qt 5 及其 C++11 功能,以 Qt 4 或 C++11 之前的方式执行此操作将需要一个带有插槽的 QObject 派生类来连接到旋转框的valueChanged信号。实施ListView不需要在 Qt 4 和 Qt 5 之间进行更改。

screenshot

#include <QtWidgets>

class ListView : public QListView {
   void paintEvent(QPaintEvent *e) {
      QListView::paintEvent(e);
      if (model() && model()->rowCount(rootIndex()) > 0) return;
      // The view is empty.
      QPainter p(this->viewport());
      p.drawText(rect(), Qt::AlignCenter, "No Items");
   }
public:
   ListView(QWidget* parent = 0) : QListView(parent) {}
};

int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   QWidget window;
   QFormLayout layout(&window);
   ListView view;
   QSpinBox spin;
   QStringListModel model;
   layout.addRow(&view);
   layout.addRow("Item Count", &spin);
   QObject::connect(&spin, (void (QSpinBox::*)(int))&QSpinBox::valueChanged,
                    [&](int value){
      QStringList list;
      for (int i = 0; i < value; ++i) list << QString("Item %1").arg(i);
      model.setStringList(list);
   });
   view.setModel(&model);
   window.show();
   return a.exec();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QListView 当列表为空时显示文本 的相关文章

  • QT从QTableWidgetItem继承到Widget并覆盖'<'运算符

    我想要一个QTableWidget具有定制的某些单元QProgressBars 并且我希望能够对包含这些的列进行排序 我的定制QProgressBar继承自两者QProgressBar and QTableWidgetItem 并且我正在覆
  • 无法在带有 QSortFilterProxyModel 的 QTreeView 的点击信号中使用 itemFromIndex

    我有一个 QTreeView 在视图和 QStandardItemModel 之间有一个 QSortFilterProxyModel 来对树进行排序 然后我想通过 clicked 信号对视图中的点击进行操作 模型 视图的设置类似于 mymo
  • 如何使用meta-toolchain-qt5构建Qt(带有QtWebEngine支持)?

    我正在尝试使用构建 Qtmeta toolchain qt5 但是当我通过这样做时poky glibc x86 64 meta toolchain qt5 cortexa7hf vfp vfpv4 neon toolchain 2 0 1
  • 如何将 zlib 添加到现有的 qt 安装中

    如何将 zlib 添加到 Qt 的现有安装中 我对此很陌生 所以请给我详细的描述 提前感谢您的帮助 zlib 包含在 Qt 核心库中 如果你想在 Qt 程序中使用 zlib 函数 你只需要包含 src 3rdparty zlib 中的 zl
  • 如何向同一个 QMenu 添加多个 QAction?

    我正在尝试实现 Qt 菜单自定义 并且我提供了一个功能来添加相同的功能QAction在同一个人民币上下文菜单中多次 但是当我尝试这样做时 myMenu gt addAction myAction myMenu gt addAction my
  • 安装J语言的JQt IDE,出现错误

    我一直按照这里的说明进行操作 http code jsoftware com wiki System Installation Linux http code jsoftware com wiki System Installation L
  • 如何在qt中创建正确的退出按钮

    我正在尝试创建一个退出按钮来正确关闭我在 QT 中制作的 GUI 我尝试通过以下方式执行此操作 include
  • 如何从 matlab 调用 Qtproject?

    我在 matlab 中有一个函数可以写入一个 file txt 我在 qt 项目中使用它 So 当我使用 unix 获取要运行的 qt 编译可执行文件时 我有一个 Matlab 文件 但出现错误 代码 unix home matt Desk
  • 使用 Qt 的网络服务

    我正在寻找使用 Qt 服务器端 实现 Web 服务的代码 如果您有任何信息 我将不胜感激 Regards 您可以使用libqxt http libqxt bitbucket org doc 0 6 qxtweb html实现服务器端Web服
  • QFileInfo::isWritable() 在 Windows 7 上具有完全权限时返回 false

    QFile file filePath QFileInfo fileInfo file file open QIODevice ReadWrite or WriteOnly if fileInfo isWritable Log error
  • 扩展 TabViewStyle styleData

    我目前正在尝试找到一种更好的方法来执行此操作 将图标添加到选项卡 现在 我正在放弃 styleData title 以包含图标源 但如果能够扩展 styleData 就更好了 这样我就可以包含其他自定义属性 这是我当前的黑客 Tab tit
  • QWinTaskbarProgress 不会显示

    我使用的是windows7和Qt5 3 0 我在 MainWindow 的构造函数中添加了以下内容 但任务栏上没有显示任何内容 我错过了什么 QWinTaskbarProgress pTaskbarProgress new QWinTask
  • QPainterPath::arcTo 上的角度如何解释?

    我正在开发图形编辑器的功能 在其中编辑弧线 当形状是椭圆形时 QPainterPath arcTo 的行为并不像我预期的那样 当它是一个圆圈时 它会按预期工作 下面的两张图片显示了结果 在第一种情况下 我创建了一个圆 然后将其转换为初始起始
  • Qt 创建者 4.8.4。 Windows 7 - 64 位安装

    我在 QT 方面遇到了一些困难 我需要在学校使用它来完成一些 GUI 应用程序 我最近完成了以下步骤 1 mingw get inst 20120426 exefrom 来源锻造 http sourceforge net projects
  • PyQt 和 QSignalMapper/lambdas - 多个信号,单槽

    我在 PyQt 的菜单上有一个操作列表 每个操作对应我想要显示的每个不同的提要 所以我有一个 Y 将活动源设置为 Y Z 将其设置为 Z 等等 对于网络漫画阅读程序 我的菜单上都有 并且觉得自动化方法可能更好 而不是每次都打字 类似于将其添
  • 如何将flex和bison与Qt项目集成?

    我正在 git 源代码控制下使用 Qt4 制作 GUI 程序 Github页面 https github com vinayak garg dic sim 项目的一小部分需要扫描和解析 所以我想在项目中使用flex和bison 我能想到3种
  • Android 版 Qt 和 BoringSSL

    我正在开发一个基于 Qt 的 Android 应用程序 它使用 QSslSocket 下载数据 由于 Android 从 OpenSSL 转向 BoringSSL 因为依赖 OpenSSL 库的 Marshmallow Qt 程序在 And
  • 如何在Qt3D中优化点云渲染

    我正在尝试使用 Qt3D 显示大型点云 20M pts 我第一次发现这个图书馆https github com MASKOR Qt3DPointcloudRenderer https github com MASKOR Qt3DPointc
  • 如何使用 qt 库中的调试符号为 qt 5.5 创建开发 shell

    我有一个开发外壳buildInputs条目包括qt55 qtbase 这很好用 今天 我在 qt 库中发生了段错误 我想要带有调试符号的 qt 库 我看了一下nixpkgs pkgs development libraries qt 5 5
  • 在 QtCreator 中调试时如何查看 qDebug 消息

    我正在从 Eclipse CDT 带有 Qt 集成插件 过渡到 QtCreator 2 0 但仍有一件事困扰着我 QtCreator 当我在 QtCreator 中调试时 我在Application output tab直到我停止正在调试的

随机推荐

  • 理解 [ClassOne, ClassTwo].each(&:my_method) [重复]

    这个问题在这里已经有答案了 可能的重复 我在观看 Railscast 时看到了这段代码 Category Product delete all 关于清除数据库 我询问了 IRC 中的线路 并被告知 delete all 是一个捷径 mode
  • Spring Boot:如何向嵌入式tomcat添加另一个WAR文件?

    Spring Boot 的嵌入式 tomcat 对于开发和部署来说都非常方便 但是 如果应添加另一个 第 3 方 WAR 文件 例如 GeoServer 怎么办 也许以下是正常的程序 安装普通的 Tomcat 服务器 将 Spring Bo
  • IntelliJ 中找不到 Maven 插件

    IntelliJ从版本12更新到13后 无法解析以下Maven相关插件 org apache maven plugins maven clean plugin 2 4 1 org apache maven plugins maven dep
  • 如何在 LINQ 中更新单个列而不加载整行?

    在 LinqToSql 中 加载行 更改列并将更改提交到数据库非常简单 using MyDataContext wdc new MyDataContext Article article wdc Article First p gt p I
  • C++:以非独占模式打开文件

    我必须开发一个应用程序来解析日志文件并将特定数据发送到服务器 它必须在 Linux 和 Windows 上运行 当我想测试日志滚动系统 它将 1 附加到名称后会创建一个同名的新系统 时 就会出现问题 在 Windows 上 尚未在 Linu
  • angular.module第二个参数“requires”的含义

    回想一下方法签名角度模块 如果第二个参数 requires提供后 我们将创建一个新模块 而不是检索现有模块 从我见过的所有文档和示例来看 该参数在使用时始终传递一个空数组 我的问题是 是requires除了告诉 Angular 创建一个新模
  • 在本地主机中加载时,浏览器会自动滚动到页面底部

    这是我见过的最奇怪的问题 我正在使用 Visual Studio Enterprise 2015 版本 14 0 25425 01 Update 3 并开发 NET Web 应用程序 今天 当我午餐时使用一个网络应用程序时 页面完全加载后
  • 如何从 Windows 服务调用 Web API

    我有一个用 Windows 服务编写的应用程序 该应用程序需要调用用 Asp Net MVC 4 WebAPi 编写的 WebAPI WebAPI 中的此方法返回一个原始类型的 DTO 如下所示 class ImportResultDTO
  • 如何比较 Amazon S3 对象的版本?

    Amazon S3 存储桶的版本控制很好 但我没有看到任何比较文件版本的简单方法 无论是通过控制台还是通过我找到的任何其他应用程序 S3Browser 似乎具有最好的版本控制支持 但没有比较 有没有一种方法可以比较 S3 上文件的版本 而无
  • C# foreach 中的排序

    我是 MVC C 新手 这是一个准备好的工作代码 工作代码的一部分 foreach var item in Model div style height 200px Html Raw item Description div 问题是描述没有
  • Jquery表单提交验证

    我有以下表格
  • Cygwin 中的正确路径用法:`python c:\somefile.py` 和 `python /cygdrive/c/somefile.py` 之间的差异

    我在 Windows Cygwin 上使用 Django 1 5 和 Python 2 7 以下命令在 bash shell 中给我一个错误 python cygdrive c Python27 Lib site packages djan
  • Bash:如何遍历目录结构并执行命令?

    我已将一个大文本文件拆分为许多较小的文件集 以进行我正在进行的性能测试 有很多这样的目录 home brianly output 02 contains 2 files myfile chunk 00 and myfile chunk 01
  • Java 无法打开/创建首选项错误

    我正在尝试播放 MIDI 音频 但每当我这样做时 它都会返回错误 May 18 2014 10 23 29 AM java util prefs WindowsPreferences
  • iOS相机离开pwa后返回黑屏

    我正在使用 html 文件输入打开相机并为我的 PWA 拍照
  • 找到最长连续数字序列的长度[重复]

    这个问题在这里已经有答案了 我有一个像这样的 numpy 数组 1 1 1 1 1 1 1 1 1 1 1 1 1 1 我想找到 1 或 1 的最长连续序列的长度 在示例中 它应该是 3 在纯Python中 gt gt gt from it
  • PyCharm导入外部库

    我在 Houdini 中使用 PyCharm 作为 python 代码的编辑器 每当我尝试导入主 Houdini 库 hou 时 我都会在 PyCharm 中收到错误标记 如果我包含代码片段 try import hou except Im
  • jQuery nth-child 在之后添加 html

    我有一个简单的无序列表 其中包含 16 个列表项 我想使用 jQuery 在每四个现有列表项之后添加一个新列表项 我该怎么做呢 代码如下 ul li some stuff li li some stuff li li some stuff
  • 在内存限制的嵌入式系统中使用boost

    我们正在使用 C 开发一个在嵌入式系统上的 Windows CE 4 中运行的应用程序 我们的限制之一是应用程序使用的所有内存都应在仅启动 我们编写了许多仅使用预先分配的内存而不是分配新内存的容器和算法 您认为在这种情况下我们可以使用 bo
  • QListView 当列表为空时显示文本

    当 QListView 中没有项目时 我想显示一些文本 例如 没有项目 我尝试重写QListView的paintEvent方法 但没有任何效果 下面的代码展示了一种简单的方法 通过重载paintEvent视图的方法 文本的绘制可能应该使用样