相关疑难解决方法(0)

QSignalMapper和原始发件人()

QComboBox在桌子上有一堆es.因此我知道触发了哪一个我重新映射信号以编码表格单元位置(如在QTableWidget选择QComboBox中所述)

(为什么Qt不只是首先发送单元激活信号,因此您可以使用与我不知道的任何其他单元格编辑相同的当前行/列机制.)

但这会删除原始发件人窗口小部件的所有知识.QComboBox* combo = (QComboBox* )sender()在插槽中调用失败,大概是因为sender()现在是QSignalMapper.

我可以使用编码的行/列来查找QComboBox表小部件,但这似乎是错误的.有更正确的方法吗?

例如:

// in table creator
_signalMapper = new QSignalMapper(this);

 // for each cell
    QComboBox* combo = new QComboBox();
    connect(combo, SIGNAL(currentIndexChanged(int)), _signalMapper, SLOT(map()));
    _signalMapper->setMapping(combo, row);

   // and finally       
   connect(_signalMapper, SIGNAL(mapped(int)),this, SLOT(changedType(int)));

 // slot
 void myDlg::changedType(int row)
 {      
        QComboBox* combo = (QComboBox* )sender(); // this doesn't work !!
 }
Run Code Online (Sandbox Code Playgroud)

编辑:为将来的搜索添加:Mark Summerfield 有一本新书" 高级Qt编程 ",解释了如何做这种事情.

c++ qt qt4

4
推荐指数
1
解决办法
5189
查看次数

如何从QTableWidget获取许多QComboBoxes的文本

我已经使用setCellWidget 将许多 QComboBox插入到QTableWidget中(我不知道qcombobox的数量,因为它来自MySQL)。但是当我想从表中获取其文本时

self.table.item(0,1).itemText() 
Run Code Online (Sandbox Code Playgroud)

要么

self.table.item(0,1).text() 
Run Code Online (Sandbox Code Playgroud)

要么

self.table.item(0,1).currentText() 
Run Code Online (Sandbox Code Playgroud)

它不起作用。通常,我可以使用来获取文本,combobox.currentText()但是表具有许多组合框,而且我不知道行和列(x,y)的信息。所以我应该使用类似.item(14,1).text()的东西

python qt qt4 pyqt pyqt4

0
推荐指数
1
解决办法
1946
查看次数

标签 统计

qt ×2

qt4 ×2

c++ ×1

pyqt ×1

pyqt4 ×1

python ×1