Database 与QTableView中的数据交互的最佳方式
我得到一个Database 与QTableView中的数据交互的最佳方式,database,qt,Database,Qt,我得到一个QTableView如下所示: 现在我有两个不同的函数(Q_SLOT),它们根据所选的数据块进行操作 为了使表格更直观,我做了一些研究,并一直在考虑添加按钮(分别在第1列和第2列),以发送关于选择哪一段数据作为目标的信号 简而言之,我正在寻找一个包含二维信息的信号:使用哪个函数,以及选择了哪个数据段(行)。虽然这可以在表外完成,但我不考虑这样做,因为我希望应用程序的使用更加直观 数据数量最多可达400~500个。除了按钮之外,还有什么更好的方法来解决这个问题吗?欢迎任何指导,粗略的想
QTableView
如下所示:
现在我有两个不同的函数(Q_SLOT
),它们根据所选的数据块进行操作
为了使表格更直观,我做了一些研究,并一直在考虑添加按钮(分别在第1列和第2列),以发送关于选择哪一段数据作为目标的信号
简而言之,我正在寻找一个包含二维信息的信号:使用哪个函数,以及选择了哪个数据段(行)。虽然这可以在表外完成,但我不考虑这样做,因为我希望应用程序的使用更加直观
数据数量最多可达400~500个。除了按钮之外,还有什么更好的方法来解决这个问题吗?欢迎任何指导,粗略的想法都可以。按钮可以添加为。在这一点上,它们是视觉模型——它们看起来像按钮,但它们的行为不像按钮。当输入单元格时,代理可以创建一个真实的按钮小部件。然后,在按钮上设置一些属性来指示函数和行就很简单了。回想一下,
QObject
有一个灵活的属性系统-请参阅setProperty
和property
方法。所有小部件都是QObject
s
按钮的
单击的
信号的接收器可以使用sender()
方法访问发送按钮实例,并读取属性。您还可以对QPushButton
进行子类化,并在单击按钮时发出自定义信号。您可以使用QSignalMapper类收集一组无参数信号,并使用与发送信号的对象对应的整数、字符串或小部件参数重新发出这些信号。所以你可以有这样一个:
QSignalMapper * mapper = new QSignalMapper(this);
QObject::connect(mapper,SIGNAL(mapped(int)),this,SLOT(function1(int)));
在表视图的每一行中添加按钮时,可以将按钮的clicked()信号连接到QSignalMapper的map()插槽,并使用setMapping添加映射,以便当按钮发出clicked()信号时,会发出映射信号(int):
QPushButton * but = new QPushButton(this);
but->setText("Function1");
QObject::connect(but, SIGNAL(clicked()),mapper,SLOT(map()));
mapper->setMapping(but, rowIndex);
ui->tableView->setIndexWidget(model->item(rowIndex,column)->index(),but);
这样,无论何时单击行中的按钮,都会发出映射器的映射(int)信号,其中包含行号。感谢链接,这非常有用!