说我有一个QTableWidget
每行都有一个QComboBox
and a QSpinBox
。考虑到我存储它们的值是QMap<QString /*Combo box val*/,int /*spin box val*/> theMap;
When comboBoxe
s 值或旋转框值正在更改我要更新theMap
。所以我应该知道组合框以前的值是什么,以便替换为新值comboBox
还要注意旋转盒的价值。
我怎样才能做到这一点?
附:我决定创建一个插槽,当您单击表格时,它会存储该行组合框的当前值。但这仅在您按下行标题时才有效。在其他地方(点击combobox
或在一个spinbox
) itemSelectionChanged()
的信号QTableWidget
不起作用。
所以一般来说我的问题是存储所选行的组合框的值,并且我将得到ComboBox
or SpinBox
甚至改变并将处理theMap
easily.
创建您自己的派生 QComboBox 类怎么样,类似于:
class MyComboBox : public QComboBox
{
Q_OBJECT
private:
QString _oldText;
public:
MyComboBox(QWidget *parent=0) : QComboBox(parent), _oldText()
{
connect(this,SIGNAL(editTextChanged(const QString&)), this,
SLOT(myTextChangedSlot(const QString&)));
connect(this,SIGNAL(currentIndexChanged(const QString&)), this,
SLOT(myTextChangedSlot(const QString&)));
}
private slots:
myTextChangedSlot(const QString &newText)
{
emit myTextChangedSignal(_oldText, newText);
_oldText = newText;
}
signals:
myTextChangedSignal(const QString &oldText, const QString &newText);
};
然后只需连接到myTextChangedSignal
相反,它现在还提供旧的组合框文本。
我希望这有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)