代码之家  ›  专栏  ›  技术社区  ›  Narek

当QTableWidget中的QComboBox的值更改时,获取该值的上一个值

  •  4
  • Narek  · 技术社区  · 15 年前

    说我有一个 QTableWidget QComboBox 和一个 QSpinBox QMap<QString /*Combo box val*/,int /*spin box val*/> theMap;

    什么时候? comboBoxe s值或数字调整框值正在更改我要更新 theMap . 所以我应该知道组合框的前一个值是什么,以便用组合框的新值替换 comboBox

    我该怎么做?

    combobox 或者在一个 spinbox itemSelectionChanged() 信号 QTableWidget

    所以一般来说,我的问题是存储所选行的组合框的值,然后 ComboBox SpinBox 即使改变也会处理

    4 回复  |  直到 6 年前
        1
  •  8
  •   Greg S    15 年前

    创建您自己的派生的qcombox类怎么样

    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 相反,它现在额外提供了旧的组合框文本。

    我希望这有帮助。

        2
  •  4
  •   marco    13 年前

    有点晚了,但我也遇到了同样的问题,于是我就这样解决了:

    class CComboBox : public QComboBox
    {
       Q_OBJECT
    
       public:
          CComboBox(QWidget *parent = 0) : QComboBox(parent) {}
    
    
          QString GetPreviousText() { return m_PreviousText; }
    
       protected:
          void mousePressEvent(QMouseEvent *e)
          { 
             m_PreviousText = this->currentText(); 
             QComboBox::mousePressEvent(e); 
          }
    
       private:
          QString m_PreviousText;
    };
    
        3
  •  0
  •   Caleb Huitt - cjhuitt    15 年前

    我的建议是实现一个模型,它将帮助您在数据和编辑数据的UI之间进行清晰的分离。然后,您的模型会得到通知,某个给定的模型索引(行和列)已更改为新数据,您可以在此时更改任何其他需要更改的数据。

        4
  •  0
  •   kyasui    6 年前

    我只是有一个类似的问题,但对我来说,我需要一个非常琐碎的东西,所以定义和实现一个完整的类,它是没有道理的前面的索引。

    因此,我所做的是保留一个名为say'previousIndex'的参数,并在完成所有需要的操作后才更新它的值