Qt-设置倒角界面
实例代码:
main.cpp
#include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include "TWidget.h" QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); setWindowTitle(QStringLiteral("Qt设置倒角界面")); TWidget *o = new TWidget(this); o->move(100, 100); o->resize(100, 30); } MainWindow::~MainWindow() { delete ui; }
TWidget.h
#ifndef TEDIT_H #define TEDIT_H #include <QWidget> #include <QPainter> #include <QStyleOption> #include <QBitmap> #include <QLineEdit> #include <QMouseEvent> class TWidget : public QWidget { Q_OBJECT public: TWidget(QWidget *parent = nullptr); ~TWidget(); protected: void paintEvent(QPaintEvent *event) override; private: QLineEdit *m_pEdit = nullptr; }; #endif // TEDIT_H
TWidget.cpp
#include "TWidget.h" TWidget::TWidget(QWidget *parent) : QWidget(parent) { m_pEdit = new QLineEdit(this); m_pEdit->setText("123"); // setStyleSheet("TWidget{" // "border-radius: 10px;" // "background: white;" // "}"); } TWidget::~TWidget() { } void TWidget::paintEvent(QPaintEvent *event) { //绘制样式 QStyleOption opt; opt.initFrom(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);//绘制样式 QBitmap bmp(this->size()); bmp.fill(); QPainter painter(&bmp); painter.setPen(Qt::NoPen); painter.setBrush(Qt::black); painter.setRenderHint(QPainter::Antialiasing); //设置边框为圆角12px painter.drawRoundedRect(bmp.rect(), 12, 12); setMask(bmp); QWidget::paintEvent(event); }
作者:疯狂Delphi
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
欢迎关注我,一起进步!扫描下方二维码即可加我