我QTableView在我的程序的主UI中有一个.当用户右键单击表格的单元格时,我想显示弹出菜单,并在从菜单中选择一个选项时采取适当的操作.
我正在使用Qt Creator 1(Qt版本4.5).我怎样才能做到这一点?
我已经将QAbstractTableModel子类化并覆盖了flags()方法,因此某些表格单元格是可编辑的.问题是当我开始编辑时,现有的单元格值被删除.我想最初选择现有的单元格值.我怎样才能做到这一点?
下面的示例代码(受此处影响很大)有一个右键单击上下文菜单,当用户单击表格中的单元格时,该菜单将显示.是否可以在表格的标题中右键单击右键单击上下文菜单?如果是这样,我如何更改代码以包含此内容?
import re
import operator
import os
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
def main():
app = QApplication(sys.argv)
w = MyWindow()
w.show()
sys.exit(app.exec_())
class MyWindow(QWidget):
def __init__(self, *args):
QWidget.__init__(self, *args)
self.tabledata = [('apple', 'red', 'small'),
('apple', 'red', 'medium'),
('apple', 'green', 'small'),
('banana', 'yellow', 'large')]
self.header = ['fruit', 'color', 'size']
# create table
self.createTable()
# layout
layout = QVBoxLayout()
layout.addWidget(self.tv)
self.setLayout(layout)
def popup(self, pos):
for i in self.tv.selectionModel().selection().indexes():
print i.row(), i.column()
menu = QMenu()
quitAction …Run Code Online (Sandbox Code Playgroud) 在我的TableModel中,我有两列.此模型连接到TableView.我如何设置它们以便这两列填充tableView所以没有可用空间?
编辑:

我有一个QTableView正常工作在GUI上显示我的模型.但是,我想创建一个"SIGNAL/SLOT",当我从中选择一行时,它可以工作QTableView.
我怎样才能做到这一点?
如下图所示,如何删除不需要的标题部分?

我的表必须只显示4个列标题.它不应该显示整个标题部分.请帮助删除在第4列(突出显示的标题部分)后显示的标题部分.
我想在单击delete按钮时从表中删除选定的行.
但我找不到有关删除Qt文档中的行的任何内容.有任何想法吗?

我在Qt 4.7中工作,并且有一个对话框,其中包含QTableView和QButton(以及其他不相关的内容).单击QButton时,它必须清除QTableView中的所有数据.我不确定如何实现这一目标.我在网上看了一会儿,但没有发现任何有用的东西.基于我在这里找到的,我尝试了这个:
void MyClass::on_myButton_clicked()
{
myTableView->model()->clear();
}
但是,这会产生以下错误:
error: C2039: 'clear' : is not a member of 'QAbstractItemModel'
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以做到这一点,我不小心忽视了?谢谢!
我很好奇如何在数据库中显示图像QTableView.
有没有这样的东西QTableWidgetItem我可以使用它QTableView?
我用QSqlTableModel.
我为qt gui编写了以下代码,以查看QTableView(面向模型)中的查询输出.现在我想将此输出保存为.csv或.txt文件.有人建议使用QTableWidget(面向项目),但我想坚持基于模型的方法.
void MainWindow::on_pushButton_clicked()
{
db = QSqlDatabase::addDatabase("QOCI");
db.setHostName("host");
db.setDatabaseName("db");
db.setUserName("uid");
db.setPassword("pw");
db.setPort(port);
QString MyQuery = ui->lineEdit->text();
if (db.open())
{
qDebug()<<QDateTime::currentDateTime()<<"QUERY DONE SUCCESSFULLY ";
this->model=new QSqlQueryModel();
model->setQuery(MyQuery);
ui->tableView->setModel(model);
}
else
{
qDebug()<<QDateTime::currentDateTime()<<"YOU FORGOT THE QUERY "<<db.lastError().text();
}
Run Code Online (Sandbox Code Playgroud)
}
任何准则???