Russian Qt Forum

Qt => Вопросы новичков => Тема начата: carhun от Декабрь 14, 2012, 12:02



Название: Разное поведение закраски кнопки
Отправлено: carhun от Декабрь 14, 2012, 12:02
Доброго времени суток.

Появилась след. не большая проблема. Правда возможно мне смогу помоч те, кто обладают KDE, Unity, т.к. эти "баги" замечены только там и пробывались только там...

Собственно, я хочу сделать след.: закрасить фон кнопки.

Делаю это вот так:
mybutton.cpp:
Код:
#include "mybutton.h"

MyButton::MyButton(const QString &str, QWidget *parent) :
    QPushButton(str, parent)
{
    QPalette pal;
    pal.setColor(backgroundRole(), Qt::yellow);
    this->setPalette(pal);
}

mybutton.h:
Код:
#ifndef MYBUTTON_H
#define MYBUTTON_H

#include <QPushButton>

class MyButton : public QPushButton
{
    Q_OBJECT
public:
    explicit MyButton(const QString &str, QWidget *parent = 0);
   
signals:
   
public slots:
   
};

#endif // MYBUTTON_H

main.cpp:
Код:
#include <QApplication>

#include "mybutton.h"
#include <QVBoxLayout>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QWidget w;

    QVBoxLayout *layout = new QVBoxLayout(&w);
    layout->addWidget(new MyButton("MyPushButton", &w));

    w.show();
   
    return a.exec();
}

Далее соотв. вопрос почему оно в KDE - все закрышивает все отлично, а в Unity - не при каких условиях не закрашивает и она остается всегда серой?

Кстати, если делать через setStyleSheet(...),то работает везде одинаково.

И 2й есть вопрос, почему если я в мейне создам кнопку без layout'a, то когда я буду менять размер окошку, то цвет тоже меняется??? т.е. я создаю кнопку как-то так:
Код:
#include <QApplication>

#include "mybutton.h"
#include <QVBoxLayout>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QWidget w;

    new MyButton("MyPushButton", &w);

    w.show();
   
    return a.exec();
}



С уважением,
 carhun


Название: Re: Разное поведение закраски кнопки
Отправлено: GreatSnake от Декабрь 14, 2012, 13:44
Хочешь цветную кнопку - используй QToolButton.