2009-11-04 8 views
24

क्या कोई जानता है कि कोई क्यूटी एप्लिकेशन की पूरी विंडो के लिए पृष्ठभूमि रंग कैसे सेट कर पाएगा?मैं क्यूटी एप्लिकेशन की पूरी विंडो के लिए पृष्ठभूमि रंग कैसे सेट करूं?

अब तक मैं स्टाइलशीट का उपयोग कर रहा हूं लेकिन केवल QGroupBox या QPushButton जैसे विजेट को पृष्ठभूमि रंग असाइन करने का तरीका समझ सकता हूं। असल में, अगर मुझे एक काला पृष्ठभूमि चाहिए तो मैं मूल पृष्ठभूमि की किसी भी सीमा के बिना इसे निर्बाध कैसे बनाऊंगा?

उत्तर

24

मैं बस पूरे खिड़की के लिए एक स्टाइल शीट का प्रयोग करेंगे।

उदाहरण के लिए, यदि आपके खिड़की QWidget से इनहेरिट है, यहाँ मैं क्या कर रहा है:

MainWindow::MainWindow(QWidget *parent) : QWidget(parent), ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    this->setStyleSheet("background-color: black;"); 
} 

पर मेरी मैक, मेरा पूरा आवेदन खिड़की काला है (शीर्षक पट्टी को छोड़कर)।

संपादित करें:

QWidget { 
    background-color: black; 
} 
: टिप्पणी के अनुसार, यहां ui फ़ाइलों का उपयोग कर और किसी बाह्य शैली पत्रक

#include <QtGui/QApplication> 
#include <QtGui/QMainWindow> 
#include <QtGui/QVBoxLayout> 
#include <QtGui/QPushButton> 
#include <QtCore/QFile> 

int main(int ArgC, char* ArgV[]) 
{ 
QApplication MyApp(ArgC, ArgV); 

QMainWindow* pWindow = new QMainWindow; 
QVBoxLayout* pLayout = new QVBoxLayout(pWindow); 
pWindow->setLayout(pLayout); 

QPushButton* pButton = new QPushButton("Test", pWindow); 
pLayout->addWidget(pButton); 

QFile file(":/qss/default.qss"); 
file.open(QFile::ReadOnly); 
QString styleSheet = QLatin1String(file.readAll()); 

qApp->setStyleSheet(styleSheet); 

pWindow->setVisible(true); 
MyApp.exec(); 
} 

शैली पत्रक फ़ाइल (default.qss) लोड हो रहा है बिना एक समाधान है इस प्रकार है यहाँ

<RCC> 
    <qresource prefix="/qss"> 
    <file>default.qss</file> 
    </qresource> 
</RCC> 

और मेरी परियोजना है:

इस फ़ाइल (stylesheet.qrc) संसाधन फ़ाइल का हिस्सा है फ़ाइल:

TARGET = StyleSheet 
TEMPLATE = app 
SOURCES += main.cpp 
RESOURCES += stylesheet.qrc 
+0

मैं इसे स्टाइलशीट में कैसे करूं? मैंने इसे QPushButton जैसे विजेट्स के लिए किया है लेकिन पूरी तरह से पृष्ठभूमि के लिए उपयोग करने के बारे में पता नहीं लगा सकता है। – bryce

+0

मुझे कुछ चीजों पर भी स्पष्टीकरण दें। मैं डिजाइनर से .ui फ़ाइल का उपयोग नहीं कर रहा हूं क्योंकि मैंने सब कुछ कोड किया है।साथ ही, मेरे पास एक अलग स्टाइलशीट .qss फ़ाइल है जो सीधे कोड कोड में कोड डालने के विरुद्ध है। – bryce

+0

धन्यवाद, मुझे पता था कि यह मेरी नाक के नीचे सही था। QWidget {पृष्ठभूमि-रंग: काला;} जो मुझे चाहिए था। मुझे एहसास नहीं हुआ कि मैं सीधे QWidget का उपयोग कर सकता हूं। – bryce

2

विगेट्स के लिए मैं आपको In Qt, how do I set the background color of a widget like combobox or double spin box? देखने का सुझाव देता हूं। Custom Looks using Qt 4.2 Style Sheets भी देखें। याद रखें कि यह दूसरा लिंक आपको दिखाता है कि इन विगेट्स में स्टाइलशीट का उपयोग कैसे करें।

यदि आप पहले से ही वेब और प्रयुक्त सीएसएस के लिए कुछ विकसित कर चुके हैं, तो यह वही बात है।

13

यह मेरे लिए काम किया है:

a = new QApplication(argc, argv); 
QPalette pal = a->palette(); 
pal.setColor(QPalette::Window, Qt::white); 
a->setPalette(pal); 
+0

यह मेरा अनुभव रहा है कि अधिकांश पैलेट भूमिकाओं के लिए, आपको मूल पैलेट प्राप्त करने की भी आवश्यकता नहीं है। डिफॉल्ट निर्मित पैलेट पर केवल एक भूमिका सेट करना, और विजेट के लिए उस पैलेट को सेट करना, केवल आपके द्वारा निर्दिष्ट भूमिका को बदल देगा। –

+0

मुझे विश्वास है कि अब आपको यह काम करने के लिए 'this-> setAutoFillBackground (true);' जैसे कुछ भी जोड़ना होगा। विजेट के लिए डिफ़ॉल्ट पृष्ठभूमि रंग सेट करते समय मुझे यह करना था। – gnovice

2

आप सिर्फ अपने कोड को

setStyleSheet("background-color: white;"); 

जोड़ने के लिए, आप सीधे किसी भी रंग दे सकते हैं।

0

पृष्ठभूमि रंग संयोजन

setPaletteBackgroundColor(Qt::black); 
setAutoFillBackground(true); 
QWidget व्युत्पन्न वर्ग में

मेरे लिए काम किया सेट करने के लिए। यह Dirk Eddelbuettel के समाधान का एक रूप है लेकिन विशेष रूप से पृष्ठभूमि के लिए फ़ंक्शन का उपयोग करता है।

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