首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Qt中为QTableView创建弹出菜单

在Qt中为QTableView创建弹出菜单,可以通过以下步骤实现:

  1. 首先,需要在QTableView中安装事件过滤器,以便捕获鼠标右键单击事件。
代码语言:cpp
复制
table_view->installEventFilter(this);
  1. 然后,需要在事件过滤器中捕获鼠标右键单击事件,并在单击事件发生时显示弹出菜单。
代码语言:cpp
复制
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
    if (obj == table_view && event->type() == QEvent::MouseButtonPress) {
        QMouseEvent *mouse_event = static_cast<QMouseEvent*>(event);
        if (mouse_event->button() == Qt::RightButton) {
            QPoint global_pos = mouse_event->globalPos();
            QPoint table_view_pos = table_view->mapToGlobal(QPoint(0, 0));
            QPoint pos = global_pos - table_view_pos;
            QModelIndex index = table_view->indexAt(pos);
            if (index.isValid()) {
                QMenu menu(this);
                QAction *action1 = new QAction("Action 1", this);
                QAction *action2 = new QAction("Action 2", this);
                menu.addAction(action1);
                menu.addAction(action2);
                menu.exec(global_pos);
            }
        }
    }
    return QMainWindow::eventFilter(obj, event);
}
  1. 最后,需要在QTableView中设置模型,以便在弹出菜单中显示数据。
代码语言:cpp
复制
QStandardItemModel *model = new QStandardItemModel(this);
model->setHorizontalHeaderLabels(QStringList() << "Column 1" << "Column 2");
table_view->setModel(model);

这样,在Qt中为QTableView创建弹出菜单的功能就实现了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

VBA通用代码:Excel创建弹出菜单

标签:VBA,快捷菜单 弹出菜单(有时也称为上下文菜单或快捷菜单)是用户界面(UI)中的菜单,提供了一组命令选项,通过某些用户操作(如鼠标右键单击)应用程序的当前状态或上下文中可用。...由于2007 MicrosoftOffice系统,Microsoft用功能区UI取代了命令栏菜单结构,这造成了创建在不同版本的MicrosoftOffice工作的菜单的技术会有所不同。...本文使用一种有效的技术创建在所有Excel版本中都可使用的弹出菜单。 注意,内置或自定义上下文菜单不同于弹出菜单的一种方式是,上下文菜单仅在右键单击鼠标时显示,而弹出菜单可以需要时显示。...Call DeletePopUpMenu ' 创建弹出菜单. Call Custom_PopUpMenu_1 ' 显示弹出菜单....图1 这样,Excel工作表,按Ctrl+m组合键,会出现如下图2所示的弹出菜单。 图2 当单击菜单的按钮时,会弹出一个信息框,如下图3所示。

3.4K51

DataGrid创建一个弹出式Details窗口

DataGrid创建一个弹出式Details窗口 这篇文章来自DotNetJunkie的提议。...他最初写信要求我们提供一个关于如何创建在DataGrid 中使用HyperLinkColumn的例子,可以在用户点击这一列后打开一个新窗口,显示出此列的详细内容。...这个例子包含两个WebForms和一个css文件(所有的代码都可以下载)--第一个WebForm包含一个展示从Northwind库读出的产品列表的DataGrid,hyperlink的states设为...} #endregion } } 除了DataNavigateUrlFormatString外确实没什么困难的,你可以注意到我实际上直接使用了一个javascript片段(注:你也可以简单地创建一个...color: #000000; } A:VISITED { color: #000000; } A:HOVER { color: #3a6ea5; } 这个指向details的超链最右边一列

2.4K80
  • 24.QTableView函数使用,右击菜单实现

    (1.0, Qt::black); itemA->setData(QBrush(linearGradient),Qt::BackgroundRole); //设置条目背景色(渐变色)...对于QStandardItem的setData()成员 函数的第二个参数role 是模型数据角色  当role值不同时,则显示视图上的方式也会不同 对于role角色,常用的值有: Qt::DisplayRole...   4         作为状态栏显示的数据(QString) Qt::WhatsThisRole 5            作为帮助信息栏显示的数据(QString) Qt::FontRole        ...      8     设置模型数据的背景色(QBrush) Qt::ForegroundRole      9     设置模型数据的前景色,比如字体(QBrush) 实现右击菜单 当用户QTableView...,并连接到槽函数 定义事件过滤器,判断是否是QTableView的QEvent::ContextMenu事件 判断成功,则调用menu.exec(cursor().pos()),在当前鼠标位置打开菜单

    1.8K40

    Qt官方示例解析-Address Book-基于单个数据模型不同视图呈现不同数据

    但是,这些数据单个选项卡并不都是可见的。相反,根据字母表组,QTableView被用来提供相同数据的9种不同视图。 QSortFilterProxyModel是负责过滤每个联系人组的联系人的类。...虽然本例没有使用QTableView对象的编辑特性,但是在这里启用了它们,这样就可以在其他程序重用这个模型。...,编辑、修改已有数据,这些数据需要显示界面同时Name项无法进行编辑,要把它设置只读。...setupTabs()函数用于AddressWidget设置9个字母组选项卡、表视图和代理模型。每个代理模型依次设置使用不区分大小写的QRegExp对象根据相关字母表组过滤联系人名称。...该函数创建一个AddDialog对象,然后调用第二个addEntry()函数来实际将联系人添加到表

    5.3K20

    25.QT-模型视图

    模型只需要对外提供标准接口存取数据,无需数据如何显示 视图只需要自定义数据的显示方式,无需数据如何组织存储 当数据发生改变时,会通过信号通知视图 当用户与视图进行交互时,会通过信号向模型发送交互信息  QT...QAbstractListModel:用来创建一维列表模型 QStandardItemModel:用来存储定制数据的通用模型 QAbstractTableModel: 用来创建二维列表模型 常用的视图类层次结构...Qt,不管模型以什么结构组织数据,都必须每个数据提供不同的索引值,使得视图能通过索引值访问模型的具体数据 以QTreeView视图为例 QWidget w; QFileSystemModel...设置模型数据的背景色(QBrush) Qt::ForegroundRole      9         设置模型数据的前景色,比如字体(QBrush) 以QTableView例 QWidget...QTableView详细使用请参考:24.QTableView函数使用,右击菜单实现 未完待续,接下来开始学习模型视图中的委托

    1.5K20

    Qt写软件系列三:一个简单的系统工具之界面美化

    11 12 QPushButton#exportBtn:hover { 13 background: #86BA10; 14 }       正常状态我们仅仅用淡绿色给他们描个边,背景色设置透明...另外要注意的是,我们总可以看到即便去掉了网格线,当我们鼠标点击某一行时,Qt仍然会在鼠标下的单元格周围画上一个选线框。这看起来就像白玉的一点瑕疵,忍不住就要把它抠出去。...QTableView的上下文菜单,则需要重写contextMenuEvent()实现。上下文的菜单项背景色仍然可以用QSS进行控制。另外,QTableView还有一个单元格对齐的问题。...为什么不是从QTableView继承呢?因为我们使用了Qt的MVC框架。View只管绘制Model的数据,至于数据内容、格式设置什么的,都在Model里面设置。...因为Qt里面的数据分很多种: ?       我们得指明,当数据是用来显示单元格的时候,我们才设置对齐方式啊。不然的话就会乱套了。总之,QSS和2D绘图用好了,界面的效果也会慢慢炫起来。

    6K70

    QTableView 一列添加两个按钮

    QTableView的一列里添加两个按钮,之前添加一个按钮的思路是一样的,只是计算了一下按钮的宽,放两个按钮而已。...本例源代码:QtTowButtons.rar 看一下列的效果 看一下添加两个按钮的效果点击第一个按钮弹出 but1 +当前列 点击第二个按钮弹出but2 + 当前行 下面是主要实现 继承自 QItemDelegate...主要是实现 了它的painter方法,把两个自定义的按钮绘制到视图并保存 还有editorEvent事件,用来处理点击事件,点击时我们算一下鼠标的坐标在哪个按钮下, 再处理相应的点击事件 #ifndef...index.isValid()) return Qt::NoItemFlags; Qt::ItemFlags flag = QAbstractItemModel::flags(...::Orientation orientation, int role) const { if (role == Qt::DisplayRole && orientation == Qt::Horizontal

    3.4K90

    Qt编写数据可视化大屏界面电子看板2-配色方案

    5:采用纯QWidget编写,支持Qt4.6到Qt5.12.3任何版本,支持嵌入式linux比如树莓派、香橙派、全志、imx6等。...如果发现布局拖动乱了,可以直接鼠标右键选择恢复布局即可,保存布局以前。 中间地图模块鼠标右键可以弹出菜单,切换布局和配色方案等。...模块的标题栏上右键可以弹出默认的dock菜单,用来显示和隐藏各模块。 软件关闭过程中会自动保存布局,下次启动以后自动应用。...如果使用的默认的默认的配色方案比如紫色风格,则配置文件的颜色全部无效,会自动应用代码的颜色,如果需要启用自定义的颜色,则将配置文件的 Theme=\x81ea\x5b9a\x4e49\x98ce\x683c...此时打开软件会应用配置文件的颜色。 右键菜单可以截图保存,默认命名为 配色方案名称_布局方案名称.png 保存在snap目录下。

    1.1K00

    Python Qt GUI设计:QTableView、QListView、QListWidet、QTableWidget、QTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)

    1、QTableView通常情况下,一个应用需要和一批数据(比如数组、列表)进行交互,然后以表格的形式输出这些信息,这时就要用到QTableView类了。...QtableView可以使用自定义的数据模型来显示内容,通过setModel来绑定数据源。...信号与自定义对象的clicked()槽函数进行绑定,当单击QListView控件里Model的一项时会弹出消息框(提示选择的是哪─项)。...列表的每个条目都是一个QListWidgetltem对象。QListWidget可以设置多重选择。...控件的itemClicked信号与自定义对象的Clicked()槽函数进行绑定,当单击QListWidget列表的一个条目时会弹出消息框,提示选择的是哪个条目。

    3.9K30

    Python Qt GUI设计:QTableView、QListView、QListWidet、QTableWidget、QTreeWidget和QTreeWidgetltem表格和树类(提升篇—1)

    1、QTableView通常情况下,一个应用需要和一批数据(比如数组、列表)进行交互,然后以表格的形式输出这些信息,这时就要用到QTableView类了。...QtableView可以使用自定义的数据模型来显示内容,通过setModel来绑定数据源。...信号与自定义对象的clicked()槽函数进行绑定,当单击QListView控件里Model的一项时会弹出消息框(提示选择的是哪─项)。...列表的每个条目都是一个QListWidgetltem对象。QListWidget可以设置多重选择。...控件的itemClicked信号与自定义对象的Clicked()槽函数进行绑定,当单击QListWidget列表的一个条目时会弹出消息框,提示选择的是哪个条目。

    3.2K20

    QTableView + QStandardItemModel模式显示表格冻结列(模板)

    它是一个基于 QAbstractItemModel 的实现,提供了简单易用的 API 来创建和管理表格数据。... QTableView ,QStandardItem 作为数据模型的基本元素,负责展示和编辑表格的数据。通过操作 QStandardItem,你可以实现对表格数据的增删改查等操作。...04、QModelIndexQModelIndex 是 Qt 框架中一个用于表示模型某个节点的对象。... QTableView、QListView 等控件,QModelIndex 用来唯一标识模型的一个元素,以便于获取和操作该元素的数据。QModelIndex 的主要作用包括:1. ...故我点击下方卡片 关注我↓↓↓Qt历险记一名技术分享师,分享方向:->Qt(C/C++、linux、STM32、MySql/Sqlite3、TCP/UDP),设计方面->Ai、PS、visio、AD、

    20410

    创建 Vitis 加速平台第 1 部分: Vivado 加速平台创建硬件工程

    作者:Stephen MacMahon 来源: 赛灵思中文社区论坛 本文中,我们将讲解如何在 Vivado® Design Suite 完成平台准备工作,以便将其用作为 Vitis™ 的加速平台。...您可通过下列链接查看其它各部分: 第 2 部分: PetaLinux 加速平台创建软件工程 第 3 部分: Vitis 中封装加速平台 第 4 部分: Vitis 测试定制加速平台 引言...因此,进行时钟设置配置时需牢记此信息。 我添加了 3 个输出时钟:100Mhz、150Mhz 和 300Mhz: ? 并将复位极性设置低电平有效 (Active Low): ?... AXI Interrupt Controller ,将“中断输出连接 (Interrupt Output Connection)”设置“单连接 (Single)”,并将其连接到 Zynq UltraScale...如需了解后续步骤,请参阅本系列博客的第 2 部分: PetaLinux 加速平台创建软件工程 Original Source: Creating an Acceleration Platform

    2.1K30

    Qt Designer基本控件介绍——Item Views(表项视图)和Item Widgets(部件)

    Item Widgets开发没有Item Views灵活,实际上Item Widgets就是Item Views的基础上绑定了一个默认的存储并提供了相关方法。...(QListWidgetItem),操作方便,直接调用addItem即可添加项目(ICON,文字) 详细介绍可以看博客 “Qt入门-列表框QListWidget类” “Qt5.9控件listWidget...详细介绍可以看博客: “QTableWidget与QTableView的区别” “QTableWidget / QTableView的应用” ---- Column View :以模型/视图数据基础的...:是命令模式(Command pattern) 的实现,用于应用程序实现撤消/重做功能。...详细介绍可看博客: “实战PyQt5: 078-撤销命令视图QUndoView” “Qt如何实现QTableView的撤消与恢复功能”

    6.3K00

    PyQt5高级界面控件之QTableWidget(四)

    将单元格内的内容沿单元格的左边缘对齐 Qt.AlignRight 将单元格内的内容沿单元格的右边缘对齐 Qt.AlignHCenter 可用空间中,居中显示水平方向上 Qt.AlignJustify...将文本可用空间内对齐,默认从左到右 单元格文本垂直对齐方式 选项 描述 Qt.AlignTop 与顶部对齐 Qt.AlignBottom 与底部对齐 Qt.AlignVCenter 可用空间中,...).setSectionResizeMode(QHeaderView.Stretch) 优化3:将表格设置禁止编辑 默认情况下,表格的字符是可以更改的,比如双击一个单元格,就可以修改原来的内容...()函数是从QTableView类继承的,用来设置是否显示表格的分割线,默认显示分割线 #表格不显示分割线 tableWidget.setShowGrid(False) 优化8:单元格添加图片...,所以只在前两行支持右键弹出菜单 if row_num < 2: menu = QMenu() item1 = menu.addAction

    3.9K10

    PyQT模块、类、控件介绍

    QtHelp模块 包含了用于创建和查看可查找的文档的类。 QtOpenGL模块 使用OpenGL库来渲染3D和2D图形。该模块使得Qt GUI库和OpenGL库无缝集成。...QtDesigner模块 所包含的类允许使用PyQt扩展Qt Designer。 Qt模块 将上面模块的类综合到一个单一的模块。...uic模块 所包含的类用来处理.ui文件,该文件由Qt Designer创建,用于描述整个或者部分用户界面。它可以将.ui文件编译为.py文件,以便其他Python程序调用。...PyQT主要类 QObject类 类层次结构是顶部类(Top Class),它是所有PyQt对象的基类。 QPaintDevice类 所有可绘制的对象的基类。...QScrollBar窗口控件 提供了一个水平的或垂直的滚动条 QSlider控件 提供了一个垂直的或水平的滑动条 QComboBox控件 一个组合按钮,用于弹出列表 QMenuBar控件 提供了一个横向菜单

    55231
    领券