Ändern rechteckigen Qt-Taste, um Runde

Ich bin versuchen, um eine Runde Taste in Qt. Ein einfaches Formular mit einem einzelnen Knopf QPushButton war in designer erstellt. Ich bin versucht, diesen in einen Runden Knopf mit setMask(). Sobald setMask() angewendet wird, die Taste disappeares. Hat ein custom-widget erstellt werden müssen, um eine Runde Taste?

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QtGui/QPushButton>


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->pushButton->setText("Test Text");
    ui->pushButton->setFixedHeight(200);
    ui->pushButton->setFixedWidth(200);

    //Set Starting point of region 5 pixels inside , make region width & height
    //values same and less than button size so that we obtain a pure-round shape

    QRegion* region = new QRegion(*(new QRect(ui->pushButton->x()+5,ui->pushButton->y()+5,190,190)),QRegion::Ellipse);
    ui->pushButton->setMask(*region);
    ui->pushButton->show();


}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QMessageBox msgbox;
    msgbox.setText("Text was set");
    msgbox.show();

}

Hinweis: Wenn die Schaltfläche erstellt im code und auf ein Fenster, bevor das Fenster angezeigt wird, die Taste wird angezeigt. Ich würde gerne mit dem WYSIWIG-Funktionen der Qt-Designer, anstatt die ganze form im code.

Schreibe einen Kommentar