2014-10-09 16 views
7

मैं QTableWidgetCellसेट विजेट पृष्ठभूमि रंग

QWidget *widget = new QWidget(); 
QCheckBox *checkBox = new QCheckBox(); 
QHBoxLayout *layout = new QHBoxLayout(widget); 
layout->addWidget(checkBox); 
layout->setAlignment(Qt::AlignCenter); 
layout->setContentsMargins(0, 0, 0, 0); 
widget->setLayout(layout); 
table->setCellWidget(0, 0, widget); 

में QCheckBox का उपयोग मैं सेल पृष्ठभूमि को बदल सकते हैं कैसे?

उत्तर

7

कोड:

widget->setStyleSheet("background-color: red"); 

ठीक काम करता है, लेकिन आप हर कंटेनर विजेट आप अपनी तालिका में जोड़ने के लिए शैली निर्धारित करने की आवश्यकता:

तो आदेश परिवर्तन आप निम्नलिखित कोड की जरूरत को देखने के लिए:

QWidget *widget = new QWidget(); 
widget->setStyleSheet("background-color: red"); 
QCheckBox *checkBox = new QCheckBox(); 
QHBoxLayout *layout = new QHBoxLayout(widget); 
layout->addWidget(checkBox); 
layout->setAlignment(Qt::AlignCenter); 
layout->setContentsMargins(0, 0, 0, 0); 
widget->setLayout(layout); 

QWidget *widget2 = new QWidget(); 
widget2->setStyleSheet("background-color: red"); 
QCheckBox *checkBox2 = new QCheckBox(); 
QHBoxLayout *layout2 = new QHBoxLayout(widget2); 
layout2->addWidget(checkBox2); 
layout2->setAlignment(Qt::AlignCenter); 
layout2->setContentsMargins(0, 0, 0, 0); 
widget2->setLayout(layout); 

ui->tableWidget->setCellWidget(0, 0, widget); 
ui->tableWidget->setCellWidget(0, 1, widget2); 

और परिणाम होगा:

enter image description here

+0

लौटाता है यह काम करता है। लेकिन केवल पिछली पृष्ठभूमि बदल गई सेल ने पृष्ठभूमि सेट की है। पिछली कोशिकाओं की पृष्ठभूमि पुनर्प्राप्त। – Ufx

+0

@Ufx मेरे संपादन देखें –

1

आप इस प्रयास करना चाहिए:

checkBox->setStyleSheet("background-color: red;"); 

आप और अधिक आम तौर पर यह निर्दिष्ट करने के लिए, इंगित करने के लिए पदानुक्रम में जो वर्ग ध्वज संभाल चाहिए सीएसएस में classtype लिखना चाहते हैं। यह इस तो कुछ इस तरह दिखाई दे सकता है:

QWidget { background-color: red; } 
+0

यह काम नहीं करता है। – Ufx

+0

@ufx क्या काम नहीं करता है? यह अब कैसा दिखता है? – msrd0

+0

यह काम करता है जैसे यह बिल्कुल काम नहीं करता है। कोई प्रतिक्रिया नहीं। – Ufx

1

आप, सेल पृष्ठभूमि, नहीं एक विजेट बदल setBackground() विधि का उपयोग करना चाहते हैं: (सफेद बिना

QCheckBox *checkBox = new QCheckBox("example"); 
QWidget *widget = new QWidget(); 
QHBoxLayout *layout = new QHBoxLayout(widget); 
layout->addWidget(checkBox); 
layout->setAlignment(Qt::AlignCenter); 
layout->setContentsMargins(0, 0, 0, 0); 
widget->setLayout(layout); 
ui->tableWidget_2->setCellWidget(0,0,widget); 
ui->tableWidget_2->item(0, 0)->setBackground(Qt::red);//this line should be 

इस मामले अपने सभी सेल लाल हो जाएगा में चेकबॉक्स के चारों ओर लाइनें)।

+0

यह मेरे लिए काम नहीं करता – Ufx

+0

ui-> tableWidget_2-> आइटम (0, 0) -> सेटबैकग्राउंड (क्यूटी :: लाल); खतरनाक है क्योंकि .setCellWidget उस सेल पर कोई आइटम नहीं बनाता है जो शून्य सूचक – Phiber

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