2016-05-13 36 views
0

(使用Visual Studio 2015年的社區,QT 5.6.0)[Qt的5.6] [的QPixmap]入門 「黑畫面與彩色像素」,在QLabel它設置的QPixmap時

對於培訓的目的,我想使用信號和插槽事件通過QLabel顯示RGB QPixmap。 (顯示一種顏色預覽)

爲此,我爲每個值(r,g和b)添加了三個滑塊。當我更新例如紅色滑塊,它應該產生與色值的新的QPixmap然後把它變成一個QLabel,像這樣:

void    Application::updateColorLabel(int value) { 
    int    r, g, b; 
    QPixmap   pixmap; 
    QColor   color; 

    this->ui.label_minValueR->setNum(value); 
    pixmap = QPixmap(this->ui.label_color_preview->size()); 
    r = this->ui.label_minValueR->text().toInt(); 
    g = this->ui.label_minValueG->text().toInt(); 
    b = this->ui.label_minValueB->text().toInt(); 
    color = QColor(r, g, b); 
    this->ui.label_color_preview->setPixmap(pixmap); 
} 

它沒有很好地工作,因爲我得到一個黑色QLabel和幾個彩色像素,如this。我真的不知道它爲什麼顯示這個。

有人可以和我一起弄清楚嗎?

+2

「顏色」未被使用,並且像素圖「像素圖」被分配了一定的大小但未被初始化。你是否錯過了一個'pixmap.fill(color);'call? – peppe

+0

@peppe謝謝你的隊友,我發佈了一個提及你的答案。 :) –

回答

0

那麼,@佩佩是對的。我忘了用顏色填充QPixmap。 :)

void    Application::updateColorLabel(int value) { 
    int    r, g, b; 
    QPixmap   pixmap; 
    QColor   color; 

    this->ui.label_minValueR->setNum(value); 
    r = this->ui.label_minValueR->text().toInt(); 
    g = this->ui.label_minValueG->text().toInt(); 
    b = this->ui.label_minValueB->text().toInt(); 
    color = QColor(r, g, b); 
    pixmap = QPixmap(this->ui.label_color_preview->size()); 
    pixmap.fill(color); 
    this->ui.label_color_preview->setPixmap(pixmap); 
} 

謝謝您的回答!