2010-01-13 10 views
6

क्या कोई तरीका है कि मैं एक qtablewidget में चयनित सेल की सीमा (या सीमा के रूप में सीमा रंग को सफ़ेद कर सकता हूं) .. डिफ़ॉल्ट रूप से बिंदीदार रेखा वाली सीमा दिखाई जाती है .. क्या आप मेरी मदद कर सकते हैं ...pyqt में qtablewidget में चयनित सेल की सीमा छुपाएं?

उत्तर

11

ऐसा लगता है कि चयनित सेल के आस-पास इस बिंदीदार सीमा को आप छिपाने की कोशिश कर रहे हैं, एक फोकस आयताकार है। किसी भी दिए गए सेल पर ध्यान केंद्रित किया जा सकता है और एक ही समय में और इसके विपरीत नहीं चुना जा सकता है। यदि आप चाहते हैं कि इस सीमा को पेंट नहीं किया जाए तो एक आइटम प्रतिनिधि का उपयोग करें। वहां आप इसे चित्रित करने से पहले आइटम की स्थिति से State_HasFocus शैली को हटा सकते हैं। Pls, ऐसा करने के तरीके पर निम्न उदाहरण देख, यह C++ है,, मुझे पता है अगर आप इसे परिवर्तित करने अजगर को

// custom item delegate class 
class NoFocusDelegate : public QStyledItemDelegate 
{ 
protected: 
    void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; 
}; 

void NoFocusDelegate::paint(QPainter* painter, const QStyleOptionViewItem & option, const QModelIndex &index) const 
{ 
    QStyleOptionViewItem itemOption(option); 
    if (itemOption.state & QStyle::State_HasFocus) 
     itemOption.state = itemOption.state^QStyle::State_HasFocus; 
    QStyledItemDelegate::paint(painter, itemOption, index); 
} 
... 
// set the item delegate to your table widget 
ui->tableView->setItemDelegate(new NoFocusDelegate()); 

आशा है कि यह मदद करता है परेशानियों जाने का संबंध

+2

उत्तर देने के लिए बहुत धन्यवाद .. मैंने सेटफोकस पॉलिसी (QtCore.Qt.NoFocus) के साथ इसे हासिल किया है क्योंकि मैंने qtablewidget का उपयोग किया है .. हालांकि मैं प्रतिनिधियों से परिचित नहीं हूं .. मैं इस जवाब को ऊपर नहीं उठा सकता। यह कहता है कि प्रतिष्ठा अंक 15 से अधिक होना चाहिए .. – Jeba

12

मुझे क्या करना पसंद करते हैं:

ui->tableWidget->setFocusPolicy(Qt::NoFocus); 

आप डिज़ाइन टैब का उपयोग करके फ़ोकस नीति भी बदल सकते हैं।

+1

.. लेकिन आप ऐसा करके कीबोर्ड नेविगेशन सुविधा खो देते हैं – swdev

संबंधित मुद्दे