我創建了一個帶有自定義按鈕的QMessageBox,它們顯示為灰色,如下面的圖片。
在Linux上運行是好的! 但在Raspberry上,它給我帶來了麻煩。 我寫的代碼片斷如下:
#include "alertmessage.h"
#include <QDebug>
#include <QAbstractButton>/span>
#include <QCoreApplication>
AlertMessage::AlertMessage(QMessageBox *parent)。QMessageBox(parent)
{
this->setFont(QFont("Roboto") )。
QFont font = this->font()。
font.setPointSize(26)。
this->setMaximumHeight(250)。
this->setModal(true)。
this->setMaximumWidth(this->minimumHeight())。
this->setWindowTitle(QString);
this-> setChecker(new QCheckBox("N?o mostrar essa menssagem novel. ", this))。)
this->setText(QString("<p style='margin-bottom: 0cm; line-height: 100%; text-align: justify;'>"/span>
"Houve uma falha de comunicação com um ou mais sensores, isso poderá"
"afetar o desempenho do sistema.</p>"))。)
this->setInformativeText(QString("<p style='margin-bottom: 0cm; line-height: 100%; text-align:justify;'><strong>Você"/span>
" quer continuar ou <span style='color: #ff0000;'>PAR</span>a aplicação?</strong></p>")。)
this->setStandardButtons(QMessageBox::No |QMessageBox::Yes)。
this->setButtonText(QMessageBox::No, QString("Parar"/span>) 。 toUpper())。
this->setButtonText(QMessageBox::Yes, QString("Continuar")) 。
QPalette okPalette = this->button(QMessageBox::Yes)->palette()。
QPalette noPalette = this->button(QMessageBox::No)->palette()。
okPalette.setColor(QPalette::Button, QColor(13, 71, 161) )。)
okPalette.setColor(QPalette::ButtonText, QColor(Qt::white))。
noPalette.setColor(QPalette::Button, QColor(127, 0, 0) )。)
noPalette.setColor(QPalette::ButtonText, QColor(Qt::white))。
this->button(QMessageBox::Yes)->setPalette(okPalette)。
this->button(QMessageBox::No)->setPalette(noPalette)。
this->setIcon(QMessageBox::Warning)。
this->setCheckBox(this->getChecker() )。
this->connect(this-> button(QMessageBox:: Yes), SIGNAL(clicked()) 。this, SLOT(turnVisible()) )。
this->connect(this-> button(QMessageBox:: No), SIGNAL(clicked()) 。this, SLOT(turnOFF()) )。
uj5u.com熱心網友回復:
我在Linux和windows中嘗試了一下,在這兩個系統中,如果你使用QPalette,他們會使用你的作業系統和系統樣式,因為這個原因,如果你想擁有自己的樣式,最好使用StyleSheet。
我在你的代碼中看到的另一件事,如果你把你的代碼放在一個建構式中,它不需要使用this。
我改變了代碼中的一些內容,結果是這樣的:
setFont(QFont("Roboto")) 。
setAutoFillBackground(true)。
QFont font = this->font()。
font.setPointSize(26)。
setMaximumHeight(250)。
setModal(true)。
setMaximumWidth(minimumHeight()) 。
setWindowTitle(QString("Falha de conex?o")) 。
setChecker(new QCheckBox("N?o mostrar essa menssagem novel. ", this))。)
setText(QString("<p style='margin-bottom: 0cm; line-height: 100%; text-align: justify;'>"/span>
"Houve uma falha de comunicação com um ou mais sensores, isso poderá"
"afetar o desempenho do sistema.</p>"))。)
this->setInformativeText(QString("<p style='margin-bottom: 0cm; line-height: 100%; text-align:justify;'><strong>Você"/span>
" quer continuar ou <span style='color: #ff0000;'>PAR</span>a aplicação?</strong></p>")。)
setStandardButtons(QMessageBox::No | QMessageBox:Yes)。
setButtonText(QMessageBox::No, QString("Parar"/span>).toUpper()
setButtonText(QMessageBox::Yes, QString("Continuar") )。)
button(QMessageBox::Yes)->setStyleSheet(QString:: fromUtf8("background-color: rgb(13, 71, 161);color:white;"/span>))。
button(QMessageBox::No)->setStyleSheet(QString:: fromUtf8("background-color: rgb(127, 0, 0);color:white;") )。
setIcon(QMessageBox::Warning)。
setCheckBox(getChecker()) 。
connect(this-> button(QMessageBox:: Yes),SIGNAL(clicked())。this, SLOT(turnVisible()) )。
連接(this->按鈕(QMessageBox:: No), SIGNAL(clicked()) 。this, SLOT(turnOFF())。
uj5u.com熱心網友回復:
我解決了這個問題,每個作業系統都有一些默認的樣式,Qt會搜索它們以使其看起來更 "原生"。考慮到這一點,我需要強迫我的應用程式采用與樹莓標準風格不同的風格。解決這個問題的代碼是:
QApplication app(argc, argv)。
qDebug() << QStyleFactory::keys(); //See available styles[/span
app.setStyle("Fusion"/span>)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/310174.html
標籤:

