Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Little problem with QPushButton



  • Hi,
    I have little problem with QPushButton.
    When I pressed button he is changes its backlight, and I don't know how turn this off.
    In example: I have basic MainWindow class and for example, the constructor:

    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
    {
        setFixedSize(800,600);
        QPushButton *button = new QPushButton("Example",this);
        button->setFixedSize(100,100);
        button->setFlat(1);
    }
    

    And I don't want to change his backlight when someone press it.
    Anyone can help me?



  • Try:

    button->setStyleSheet("QPushButton { background-color: #CBC9CF; } \n 
                           QPushButton:pressed  { background-color: #CBC9CF; } ");
    

    I haven't tested it, but it should work. Reference: Qt Stylesheets



  • Heh, thanks for reply, but this don't resolve my problem. Maybe I must give really example.
    In my app I have 2 situations:
    when button is released
    https://www.dropbox.com/s/iqa3iasy0306hkz/Screenshot from 2016-06-23 09-55-41.png?dl=0
    and when is pressed
    https://www.dropbox.com/s/s9w0b1ouplg8anh/Screenshot from 2016-06-23 09-55-51.png?dl=0
    I have a similar code:

    #include "menuwindow.h"
    
    MenuWindow::MenuWindow()
    {
        setWindowTitle("Menu");
        initButtons();
        setconnectButtons();
        show();
    }
    
    MenuWindow::~MenuWindow()
    {
        delete StartGame;
    }
    
    void MenuWindow::initButtons()
    {
        StartGame = new QPushButton("",this);;
        setButton(StartGame,1);
        setReleasedStartGamePixmap();
    }
    
    void MenuWindow::setButton(QPushButton* button,int consecution)
    {
        button->setFixedSize(BUTTON_WIDTH,BUTTON_HEIGHT);
        button->setIconSize(QSize(BUTTON_WIDTH,BUTTON_HEIGHT));
        button->setFlat(true);
        button->move(WIDTH_WINDOW/4,consecution*HEIGHT_WINDOW/8);
    }
    
    void MenuWindow::setconnectButtons()
    {
        connect(StartGame,SIGNAL(released()),this,SLOT(setReleasedStartGamePixmap()));
        connect(StartGame,SIGNAL(pressed()),this,SLOT(setPressedStartGamePixmap()));
    }
    
    void MenuWindow::setReleasedStartGamePixmap()
    {
        StartGame->setIcon(QIcon(":/images/Pixmaps/Windows/Menu/Buttons/StartGame_Released.png"));
    }
    
    void MenuWindow::setPressedStartGamePixmap()
    {
        StartGame->setIcon(QIcon(":/images/Pixmaps/Windows/Menu/Buttons/StartGame_Pressed.png"));
    }
    
    int MenuWindow::BUTTON_WIDTH = 400;
    int MenuWindow::BUTTON_HEIGHT = 50;
    

    I don't want white rim, when button was pressed.
    And if I add your code:

    button->setStyleSheet("QPushButton { background-color: transparent; } \n 
                           QPushButton:pressed  { background-color: transparent; } ");
    

    I have black rim :/.
    Anyone have idea, how resolve this problem?



  • Do you want this?

    QPalette p(ui->pushButton->palette());
        QBrush brush(Qt::transparent);
        p.setBrush(QPalette::Highlight, brush);
        ui->pushButton->setPalette(p);
    


  • @feniks_fire

    Something like this:

    auto button = new QPushButton("", this);
    button->setGeometry(X, Y, BUTTON_WIDTH, BUTTON_HEIGHT);
    button->setStyleSheet("QPushButton {
    	background-image: url(:/images/Pixmaps/Windows/Menu/Buttons/StartGame_Released.png);
    	min-width: 400px;
    	min-height: 50px;
    	border: none;
    	background-repeat: repeat-n;
    }
    
    QPushButton:pressed {
    	background-image: url(:/images/Pixmaps/Windows/Menu/Buttons/StartGame_Pressed.png);
    }");
    


  • @Devopia53
    Wow, it's works!
    I couldn't find how resolve this problem, and I don't really know how to describe it.
    Now I see I must learning some things about StyleSheet ;).
    So, thank you for resolve my problem ;).

    And thanks all of you guys for your time.
    Topic is resolved.


Log in to reply