2014-03-28 72 views
2

是否有任何方式禁止QTableWidget中除數字(0-9)以外的任何字符?對於QLineEdits,我使用RegEx驗證程序,但這不適用於QTableWidgets。我想在CellWidgets中插入QLineEdits到表中,但後來我不得不在代碼中重寫大量的函數。那麼,有沒有其他(直接)方法可以這樣做?QTableWidget:只允許使用數字

回答

7

我會建議使用您的表小部件的項目委託來處理可能的用戶輸入。以下是簡化的解決方案。

項目委託的實現:

QTableWidget tw; 
tw.setItemDelegate(new Delegate); 
// Add table cells... 
tw.show(); 

class Delegate : public QItemDelegate 
{ 
public: 
    QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem & option, 
         const QModelIndex & index) const 
    { 
     QLineEdit *lineEdit = new QLineEdit(parent); 
     // Set validator 
     QIntValidator *validator = new QIntValidator(0, 9, lineEdit); 
     lineEdit->setValidator(validator); 
     return lineEdit; 
    } 
}; 

與自定義項目委託的簡單表格控件的實現