2013-03-28 2 views
1

Я новичок в Qt.i обрабатываю виджеты холста через класс QGraphicsScene. Но я не могу изменить белый фон по умолчанию для виджета. Вот и код.i попытался использовать QBrush для установите фон. Но он не работает. Он остается белым. Какова проблема в следующем коде?Qt GraphicsScene Фон не изменяется

int main(int argc, char **argv){ 

    QApplication a(argc, argv); 


    QGraphicsScene canvas; 
    canvas.addText("Hello World"); 
    QColor *color=new QColor(0x70,0x80,0x50,255); 
    QBrush *brush=new QBrush(); 
    brush->setColor(*color); 
    canvas.setBackgroundBrush(*brush); 

    QGraphicsView view(&canvas); 
    view.show(); 




    return a.exec(); 


} 
+1

Это не отвечает на ваш вопрос, а просто FYI, ваш код пропускает память. Не используйте новый оператор для выделения объектов QColor и QBrush, вместо этого объявляйте их как объекты стека (так же, как вы делали с объектами QApplication и QGraphicsScene). setColor() и setBackgroundBrush() будут делать копии их в любом случае, поэтому нет никакой пользы для их размещения с новыми. –

ответ

5

Попробуйте передавая цвет в кисти конструктора вместо впоследствии

QBrush brush(QColor(0x70, 0x80, 0x50, 255)); 
canvas.setBackgroundBrush(brush); 

который будет задавать стиль кисти для Qt::SolidPattern. Конструктор кистей по умолчанию задает стиль Qt::NoBrush. См. http://qt-project.org/doc/qt-4.8/qbrush.html#QBrush

+0

он работал хорошо. Можете ли вы просто сказать, как изменить цвет текста на холсте (QGraphicsScene :: addText). – Crain008

+0

'QGraphicsScene :: addSimpleText' возвращает указатель на вновь созданный' QGraphicsSimpleTextItem'. Затем вы можете изменить кисть для этого текстового времени. Например, 'canvas.addSimpleText (« Hello World ») -> setBrush (Qt :: red);' –

-1
view.setStyleSheet("background-color: black;"); 

 Смежные вопросы

  • Нет связанных вопросов^_^