假设我有一个 QTableWidget
每行都有一个 QComboBox
和一个 QSpinBox
.考虑到我存储它们的值是 QMap<QString /*Combo box val*/,int /*spin box val*/> theMap;
当 comboBoxe
s 值或旋转框值正在更改我想更新 theMap
.所以我应该知道组合框以前的值是多少,以便替换为 comboBox
的新值。还要注意旋转框的值。
我该怎么做?
附言我决定创建一个插槽,当您单击表格时,它会存储该行组合框的当前值。但这仅在您按下行标题时有效。在其他地方(点击 combobox
或 spinbox
) itemSelectionChanged()
QTableWidget
的信号不起作用。
所以一般来说,我的问题是存储所选行的组合框的值,我会得到 ComboBox
或 SpinBox
甚至改变并将处理theMap
很容易。
最佳答案
如何创建自己的派生 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
,它现在还提供旧的组合框文本。
希望对您有所帮助。
关于c++ - 当值改变时,获取 QComboBox 的先前值,该值位于 QTableWidget 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3184395/