2015-07-31 6 views

ответ

2

Я оказался в таком же положении некоторое время назад, когда делал приложение для встроенной системы Linux.

Я не нашел прямого решения (я искал способ его достижения с помощью CSS).

В результате я создал новый QWidget (используя конструктор). Затем поместите в него кнопку с QLabel под ней.

Затем добавил простую статическую функцию

static void wdgCustomButton::create(const QString iconPath, const QString text) 
{ 
    // create a new button here, create some modification functions for 
    // text, image and optionally QStyleSheets. 

    // Call those here (pass the arguments) 

    // Then return the button 
    // pseudo code, (not tested): 

    wdgCustomButton button = new wdgCustomButton(/* could pass a parent */); 
    button->setIcon(iconPath); // function simply calls the ui->button->setIcon 
    button->setText(text);  // function simply calls the ui->label->setText 
    return button; 
} 

А затем добавить эти новые QWidgets к вашему панель с помощью кода (возможно, кто-то знает, как получить его в панели инструментов по умолчанию, но я не искал, что сам но так как я никогда не нуждался в этом).

this->menuButtons[menuBtnsCount] = wdgCustomButton::create(":/Images/Warning.png", "Delete everything");    
this->menuButtons[menuBtnsCount]->setGeometry(QRect(/* size and position here */)); 
this->menuButtons[menuBtnsCount]->show(); 

Надеюсь, это может дать вам идею исправить это простым способом!

Редактировать: Извините, я забыл добавить что-то о событии click. Событие click было главным образом, почему я сделал QWidget из этого! Я просто использовал функцию подключения [Я верю на всю кнопку: connect (this-> menuButtons [0], ...]