国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Qt繪制邊框有陰影兼容性問(wèn)題

這篇具有很好參考價(jià)值的文章主要介紹了Qt繪制邊框有陰影兼容性問(wèn)題。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

在Qt開(kāi)發(fā)過(guò)程中,有時(shí)候我們要顯示一個(gè)有陰影的對(duì)話框,這時(shí)一般采用自定義實(shí)現(xiàn),然而最近在開(kāi)發(fā)時(shí)軟件時(shí),Win11上顯示正常,Win10或其他Win11電腦顯示不正常,存在兼容性問(wèn)題嗎?

下面是具體的源碼

#ifndef POPUPPEPANEL_H
#define POPUPPEPANEL_H

#include <QWidget>


class QPushButton;


class PopupPanel : public QWidget
{
    Q_OBJECT
public:
    explicit PopupPanel(QWidget *parent = nullptr);

protected:
    void paintEvent(QPaintEvent *event) override;

private:
    void initView();


private:
    QPushButton *m_btnAi{nullptr};
    QPushButton *m_btnDoc{nullptr};
    QPushButton *m_btnLink{nullptr};
    QPushButton *m_btnExcel{nullptr};

};

#endif // POPUPPEPANEL_H
#include "popuppanel.h"
#include <QPainter>
#include <QVBoxLayout>
#include <QSpacerItem>
#include <QtMath>
#include <QApplication>
#include <QDateTime>
#include <QPushButton>
#include <QPainterPath>

#define PRINTTIME QDateTime::currentDateTime().toString("yyyy.MM.dd hh:mm:ss.zzz");


PopupPanel::PopupPanel(QWidget *parent) :
    QWidget(parent)
{
    setAttribute(Qt::WA_TranslucentBackground, true);
    initView();
}

void PopupPanel::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);
    //繪制陰影
    QPainter painter(this);
    QPainterPath path;
    path.setFillRule(Qt::WindingFill);
    path.addRoundedRect(5, 5, this->width() - 5 * 2, this->height() - 5 * 2, 3, 3);
    painter.setRenderHint(QPainter::Antialiasing, true);
    painter.fillPath(path, QBrush(Qt::white));

    QColor color("#BBBBBB");
    for (int i = 0; i < 5; i++)
    {
        QPainterPath path;
        path.setFillRule(Qt::WindingFill);
        path.addRoundedRect(5 - i, 5 - i, this->width() - (5 - i) * 2, this->height() - (5 - i) * 2, 3 + i, 3 + i);
        color.setAlpha(80 - qSqrt(i) * 40);
        painter.setPen(color);
        painter.drawPath(path);
    }
}



void PopupPanel::initView()
{
    QVBoxLayout *vLayoutMain = new QVBoxLayout();
    vLayoutMain->setSpacing(12);//4
    vLayoutMain->setContentsMargins(5, 12, 5, 12);
    vLayoutMain->setObjectName(QString::fromUtf8("vLayoutMain"));

    QSize size(110, 28);
    m_btnAi = new QPushButton(this);
    m_btnAi->setMinimumSize(size);
    m_btnAi->setMaximumSize(size);

    m_btnDoc = new QPushButton(this);
    m_btnDoc->setMinimumSize(size);
    m_btnDoc->setMaximumSize(size);

    m_btnLink = new QPushButton(this);
    m_btnLink->setMinimumSize(size);
    m_btnLink->setMaximumSize(size);

    m_btnExcel = new QPushButton(this);
    m_btnExcel->setMinimumSize(size);
    m_btnExcel->setMaximumSize(size);

    vLayoutMain->addWidget(m_btnAi);
    vLayoutMain->addWidget(m_btnDoc);
    vLayoutMain->addWidget(m_btnLink);
    vLayoutMain->addWidget(m_btnExcel);
    this->setLayout(vLayoutMain);

    //灰底
    QString strButtonStyle = QString("QPushButton{background-color:transparent;border-radius:0px;"
                                "background-image: url(:/image/%1);background-origin:content;background-position:left;"
                                "background-repeat: no-repeat;text-align:center;padding-left:12px;border:none;}"
                                "QPushButton:hover{background-color:#F2F2F2;}"
                                "QPushButton:pressed{background-color:#D5E7FE;}"
                               );

    m_btnAi->setStyleSheet(strButtonStyle.arg("ai.png"));
    m_btnDoc->setStyleSheet(strButtonStyle.arg("ding_doc.png"));
    m_btnLink->setStyleSheet(strButtonStyle.arg("link.png"));
    m_btnExcel->setStyleSheet(strButtonStyle.arg("excel.png"));

    QFont font = qApp->font();
    font.setPixelSize(14);
    m_btnAi->setFont(font);
    m_btnDoc->setFont(font);
    m_btnLink->setFont(font);
    m_btnExcel->setFont(font);

    m_btnAi->setText("Ai");
    m_btnDoc->setText("Doc");
    m_btnLink->setText("Link");
    m_btnExcel->setText("Excel");
}



#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include "popuppanel.h"

QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACE

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();
    void initData();

public slots:
    void slotShowDialog();

private:
    Ui::Dialog *ui;
    PopupPanel *m_popupPanel{nullptr};
};
#endif // DIALOG_H
#include "dialog.h"
#include "ui_dialog.h"
#include <QDebug>

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
    ui->setupUi(this);
    initData();
}

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

void Dialog::initData()
{
    QString strButtonStyle = QString("QPushButton{background-color:transparent;border-radius:0px;"
                                "background-image: url(:/image/show_move_control_normal.png);background-origin:content;background-position:left;"
                                "background-repeat: no-repeat;text-align:left;padding-left:12px;border:none;}"
                                "QPushButton:hover{background-color:#F2F2F2;background-image: url(:/image/show_move_control_hover.png);}"
                                "QPushButton:pressed{background-color:#D5E7FE;background-image: url(:/image/show_move_control_normal.png);}"
                               );

    //顯示陰影對(duì)話框
    m_popupPanel = new PopupPanel(this);
    m_popupPanel->setObjectName(QString("m_popupPanel"));
    m_popupPanel->setMaximumSize(QSize(120, 150));
    m_popupPanel->setMinimumSize(QSize(120, 150));
    m_popupPanel->setWindowFlags(Qt::FramelessWindowHint | Qt::Popup);
    m_popupPanel->hide();
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(slotShowDialog()));
}

void Dialog::slotShowDialog()
{
    qDebug() << "slotShowDialog=============================" << ui->pushButton->pos();
    QPoint point = mapToGlobal(ui->pushButton->pos());
    qDebug() << "slotShowDialog======================point=======" << point;
    m_popupPanel->move(point.x() - 130, point.y() - 160);
    m_popupPanel->show();
    qDebug() << "slotShowDialog=============================" << m_popupPanel->pos();
}
#include "dialog.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QFont defaultFont = qApp->font();
    defaultFont.setFamily("Microsoft YaHei");
    qApp->setFont(defaultFont);
    Dialog w;
    w.show();
    return a.exec();
}

運(yùn)行點(diǎn)擊Button按鈕

Qt繪制邊框有陰影兼容性問(wèn)題,# QT繪圖相關(guān),qt

這是在Win11上顯示的效果

Qt繪制邊框有陰影兼容性問(wèn)題,# QT繪圖相關(guān),qt

這是在Win10上顯示的效果,很明顯示,右邊和底部有黑色線

同樣一份代碼為什么不同系統(tǒng)有不同效果呢?

原來(lái)有的系統(tǒng)是默認(rèn)帶了這個(gè)陰影效果,得把它去掉,即設(shè)置屬性時(shí),多加一個(gè)Qt::NoDropShadowWindowHint

在Dialog::initData()函數(shù)里,把

m_popupPanel->setWindowFlags(Qt::FramelessWindowHint | Qt::Popup);

改成

m_popupPanel->setWindowFlags(Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint | Qt::Popup);

運(yùn)行效果如下:

Qt繪制邊框有陰影兼容性問(wèn)題,# QT繪圖相關(guān),qt

?現(xiàn)在在Win10上沒(méi)有黑邊效果了文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-856288.html

到了這里,關(guān)于Qt繪制邊框有陰影兼容性問(wèn)題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Microsoft edge兼容性問(wèn)題

    Microsoft edge兼容性問(wèn)題

    連接需要登錄界面的無(wú)線網(wǎng)絡(luò)時(shí)候,Microsoft edge老是會(huì)出現(xiàn)兼容性問(wèn)題的錯(cuò)誤。 這時(shí)候設(shè)置什么也打不開(kāi)。 通過(guò)網(wǎng)上搜索,我是通過(guò)修改注冊(cè)表的方法成功的。 Win10 Edge兼容性問(wèn)題打不開(kāi)|解決瀏覽器兼容性問(wèn)題_白云一鍵重裝系統(tǒng) 步驟一:打開(kāi)運(yùn)行 ①可以同時(shí)按鍵盤(pán)的Win和

    2024年02月10日
    瀏覽(96)
  • TRichView兼容性問(wèn)題 Crack

    TRichView兼容性問(wèn)題 Crack

    Markdown導(dǎo)入和導(dǎo)出現(xiàn)在支持存儲(chǔ)在Markdown文本中的圖像,而不是外部文件。 在TRichView.MarkdownProperties.SaveOptions:rvmdsoInlineImages中添加了一個(gè)新選項(xiàng)。 兼容性問(wèn)題: TRichView.SavePicture有一個(gè)新參數(shù):IsBackgroundImage。 對(duì)于Apple macOS,Ctrl在默認(rèn)快捷方式和編輯器中的超鏈接激活中已更改

    2024年02月04日
    瀏覽(29)
  • 解決flex gap兼容性問(wèn)題

    解決flex gap兼容性問(wèn)題

    一個(gè)項(xiàng)目寫(xiě)下來(lái),在網(wǎng)頁(yè)端預(yù)覽的時(shí)候正常,結(jié)果到產(chǎn)品經(jīng)理手上。 設(shè)計(jì)稿樣式 實(shí)際產(chǎn)品手機(jī)上樣式 產(chǎn)品:“你這玩意兒怎么沒(méi)間距?” 我:“為什么我的正常???吶吶吶你看我手機(jī)(來(lái)自RedmeK50Utral)” 產(chǎn)品:“哦,你看我的手機(jī)(來(lái)自榮耀20)” 我:“。。?!?至此

    2024年02月07日
    瀏覽(19)
  • 解決前端瀏覽器兼容性問(wèn)題

    解決前端瀏覽器兼容性問(wèn)題時(shí)前端開(kāi)發(fā)中的一項(xiàng)重要任務(wù)。以下是一些常用的方法來(lái)解決這類(lèi)問(wèn)題: 1、使用css前綴: 不同瀏覽器可能對(duì)某些CSS屬性有不同的前綴要求??梢允褂肅SS前綴來(lái)覆蓋不同瀏覽器的樣式需求。例如,使用 -webkit 前綴來(lái)適配WebKit(Chrome、Safari)瀏覽器

    2024年02月09日
    瀏覽(20)
  • 如何解決群暉硬盤(pán)兼容性問(wèn)題

    首先,在群暉設(shè)置-終端-啟用SSH。然后,下載putty,用administrator管理權(quán)限組的賬號(hào)登錄, 如輸入“ssh?你的DSM用戶名@IP”,輸入登錄密碼登錄。最后,運(yùn)行以下命令切換到root權(quán)限。 sudo - i 進(jìn)到系統(tǒng)配置文件夾。 cd ?/etc.default 備份配置文件 cp ?synoinfo.conf synoinfo.conf2 編輯配置文

    2024年02月09日
    瀏覽(21)
  • 【H5】H5安卓、ios兼容性問(wèn)題

    H5在安卓機(jī)型和IOS機(jī)型或者相同機(jī)型的不同瀏覽器中的某些樣式會(huì)存在不一樣的表現(xiàn),所以需要解決相應(yīng)的兼容性問(wèn)題 1、IOS端兼容input光標(biāo)高度 問(wèn)題癥狀:input輸入框光標(biāo),在安卓手機(jī)上顯示沒(méi)有問(wèn)題,但是在蘋(píng)果手機(jī)上當(dāng)點(diǎn)擊輸入的時(shí)候,光標(biāo)的高度和父盒子的高度一樣

    2024年02月16日
    瀏覽(32)
  • 微信小程序、h5兼容性問(wèn)題(1)

    微信小程序、h5兼容性問(wèn)題(1)

    1. 微信小程序中border-image 設(shè)置漸變 導(dǎo)致border-radius 不生效。 不建議兩者同時(shí)使用,實(shí)測(cè)ipone12 不兼容, ipone 12以上正常顯示??梢允褂帽尘皥D片代替。 2. h5 使用原生table tr、th、td封裝表格,在ios 中樣式失效 建議使用dev 整體布局。 3. 企業(yè)微信群二維碼插件materialPlugin、cell

    2023年04月09日
    瀏覽(23)
  • 【前端】vant組件移動(dòng)端兼容性問(wèn)題匯總

    【前端】vant組件移動(dòng)端兼容性問(wèn)題匯總

    記錄使用vant組件開(kāi)發(fā)過(guò)程中遇到的兼容性問(wèn)題 問(wèn)題截圖: 解決方法: 模擬滾動(dòng)觸發(fā)日歷組件的加載,在van-calendar上綁定@open=\\\"openCalendar\\\"事件 參考來(lái)源:vant 日歷插件,部分全面屏手機(jī)顯示不出來(lái) 解決方法: 更改掛載節(jié)點(diǎn),在van-popup上加get-container=“body” 參考來(lái)源:vant兼容

    2024年02月10日
    瀏覽(21)
  • vite項(xiàng)目低版本瀏覽器兼容性問(wèn)題

    vite項(xiàng)目低版本瀏覽器兼容性問(wèn)題

    技術(shù): vite+vue3.2+ts+element-plus 開(kāi)發(fā)環(huán)境沒(méi)有問(wèn)題,但是打包后的代碼放到正式環(huán)境,頁(yè)面空白... 現(xiàn)場(chǎng)的小伙伴發(fā)來(lái)報(bào)錯(cuò)問(wèn)題? Uncaught SynntaxError:Unexpected token ? 納尼,這這這...什么原因,一頭霧水 用火狐瀏覽器訪問(wèn),沒(méi)有報(bào)錯(cuò),開(kāi)始狂擺...時(shí)間一點(diǎn)點(diǎn)流逝,全網(wǎng)沒(méi)有找到解決

    2024年02月09日
    瀏覽(24)
  • uniapp微信小程序兼容性問(wèn)題記錄(持續(xù)記錄)

    uniapp微信小程序兼容性問(wèn)題記錄(持續(xù)記錄)

    “vue”: { “version”: “2.6.14” } “uview-ui”: { “version”: “1.8.7” }, 用如上方式在H5端運(yùn)行時(shí)沒(méi)有問(wèn)題的,但在微信小程序端就找不到組件,所以修改為全部在main.js中引入 官方解釋如下 https://ask.dcloud.net.cn/question/145410 H5端運(yùn)行效果 微信小程序端運(yùn)行效果 一開(kāi)始以為:style沒(méi)

    2024年02月09日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包