首页
学习
活动
专区
工具
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.1K51

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.7K40

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.3K80

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

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

5.1K20

25.QT-模型视图

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

1.4K20

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

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

5.1K70

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.1K90

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

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

3K20

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.7K30

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的撤消与恢复功能”

5.7K00

创建 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

2K30

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.6K10

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控件 提供了一个横向菜单

36331

python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性

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

8.9K23
领券