2015-10-07 100 views
1

我是Qt新手,閱讀了所有關於樣式表的文檔,並且我幾乎知道如何樣式化我的應用程序。我的文件是這樣的:在Qt中加載外部樣式表

Project/ -> babel.pro resources.qrc gui/ -> QtFiles, stylesheet.qss app/ -> main.cpp

我主要如下所示:

int main(int ac, char **av) { 
    MyApplication app(ac, av); 
    MyWidget widget; 

    QFile File(":/gui/stylesheet.qss");             
    File.open(QFile::ReadOnly); 
    QString StyleSheet = QLatin1String(File.readAll()); 

    app.setStyleSheet(StyleSheet); 
    widget.show(); 

    return app.exec(); 

} 

MyApplication.hpp:

class MyApplication : public QApplication { 

public: 

    MyApplication(int argc, char **av) : QApplication(argc, av) {} 
    virtual ~MyApplication() {} 
    virtual bool notify(QObject *rec, QEvent *ev) { 
    try { 
     return QApplication::notify(rec, ev); 
    } 
    catch (const std::exception &e) { 
     std::cerr << e.what() << std::endl; 
     exit(0); 
    } 
    return false; 
    } 
}; 

最後MyWidget.cpp:

MyWidget::MyWidget(QWidget *parent) : QWidget(parent) 
{ 
    QVBoxLayout *mainLayout = new QVBoxLayout; 

    setFixedSize(1920, 1200); 
    setWindowTitle(tr("Babel")); 

    _tabWidget = new QTabWidget; 
    _tabWidget->addTab(new Home(), tr("Home")); 
    _tabWidget->addTab(new Contact(), tr("Contact")); 

    _tabWidget->resize(10, _tabWidget->height()); 

    mainLayout->addWidget(_tabWidget); 
    setLayout(mainLayout); 
} 

我在babel.pro加入這一行(這是編譯一般的.pro):RESOURCES += resources.qrc

但我有運行應用程序時,這個錯誤:QIODevice::read: device not open

編輯:

我的資源文件是這樣的:

<!DOCTYPE RCC>                   
<RCC version="1.0"> 
    <qresource> 
     <file>/gui/stylesheet.qss</file> 
    </qresource> 
</RCC> 
+0

您是否將樣式表文件添加到資源文件中? – SingerOfTheFall

+0

是的,我添加了 /gui/stylesheet.qss就像我在文檔 –

+0

中讀到的那樣,你是否將它添加到'.qrc'文件中?如果是這樣,你添加了一個前綴,還是你的文件看起來像' /gui/stylesheet.qss '? – SingerOfTheFall

回答

1

路徑缺少的,所以/gui/stylesheet.qss成爲./gui/stylesheet.qss「」!它如預期的那樣工作。

謝謝你的時間傢伙,一個愚蠢的錯誤,我不會重複!