精华内容
下载资源
问答
  • Qt qml 自定义消息提示框

    千次阅读 2017-10-28 16:12:16
    Qt qml 自定义消息提示框   QtQuick有提供比较传统的信息提示框MessageDialog,但是实际开发过程并不 太能满足我们的需求。下面是根据controls2模块中Dialog控件自定义的简单的信息提示框。 可以根据信息的多少...

    Qt qml 自定义消息提示框

      QtQuick有提供比较传统的信息提示框MessageDialog,但是实际开发过程并不
    太能满足我们的需求。下面是根据controls2模块中Dialog控件自定义的简单的信息提示框。

    可以根据信息的多少来自动调节信息框的大小:

    这里写图片描述

    这里写图片描述

    这里写图片描述

    下面上代码:
    

    MsgDialog.qml

    import QtQuick 2.6
    import QtQuick.Window 2.2
    import QtQuick.Controls 2.2
    import QtQuick.Layouts 1.3
    
    Item {
        id: root
        anchors.centerIn: parent
        //提示框内容
        property alias tipText: msg.text
        //提示框颜色
        property string backGroundColor: "white"
        property Item parentItem : Rectangle {}
    
        //Dialog header、contentItem、footer之间的间隔默认是12
        // 提示框的最小宽度是 100
        width: {
            if(msg.implicitWidth < 100 || msg.implicitWidth == 100)
                return 100;
            else
                return msg.implicitWidth > 300 ? 300 + 24 : (msg.implicitWidth + 24);
        }
        height: msg.implicitHeight + 24 + 100
    
        Dialog {
            id: dialog
            width: root.width
            height: root.height
            modal: true
            background: Rectangle {
                color: backGroundColor
                anchors.fill: parent
                radius: 5
            }
            header: Rectangle {
                width: dialog.width
                height: 50
                border.color: backGroundColor
                radius: 5
                Image {
                    width: 40
                    height: 40
                    anchors.centerIn: parent
                    source: "/images/warning_48.png"
                }
            }
            contentItem: Rectangle {
                border.color: backGroundColor
                color: backGroundColor
                Text {
                    anchors.fill: parent
                    anchors.centerIn: parent
                    font.family: "Microsoft Yahei"
                    color: "gray"
                    text: tipText
                    wrapMode: Text.WordWrap
                    verticalAlignment: Text.AlignVCenter
                    horizontalAlignment: Text.AlignHCenter
    
                }
            }
            footer: Rectangle {
                width: msg.width
                height: 50
                border.color: backGroundColor
                color: backGroundColor
                radius: 5
                Button {
                    anchors.centerIn: parent
                    width: 80
                    height: 30
                    background: Rectangle {
                        anchors.centerIn: parent
                        width: 80
                        height: 30
                        radius: 5
                        border.color: "#0f748b"
                        border.width: 2
                        color: backGroundColor
                        Text {
                            anchors.centerIn: parent
                            font.family: "Microsoft Yahei"
                            font.bold: true
                            color: "#0f748b"
                            text: "OK"
                        }
                    }
                    onClicked: {
                        dialog.close();
                    }
                }
            }
        }
    
        //利用Text 的implicitWidth属性来调节提示框的大小
        //该Text的字体格式需要与contentItem中的字体一模一样
        Text {
            id: msg
            visible: false
            width: 300
            wrapMode: Text.WordWrap
            font.family: "Microsoft Yahei"
            verticalAlignment: Text.AlignVCenter
            horizontalAlignment: Text.AlignHCenter
        }
    
        function openMsg() {
            root.x = (parent.width - dialog.width) * 0.5
            root.y = (parent.height - dialog.height) * 0.5
            dialog.open();
        }
    }

    在做这个控件的时候发现了一个问题,就是当我们利用Loader加载控件并且该控件使用了controls2模块时,把loader的asynchronous属性设置为true的时候,会报错”Object destroyed during incubation”,目前还没有找到解决的办法,有知道的同学可以交流一下。。。。

    注意:作者使用的是Qt5.9版本,文章中使用的有些属性是从Qt5.8才开始有的!

    源码下载: http://download.csdn.net/download/a844651990/10042941

    展开全文
  • QT QML自定义等待提示框

    千次阅读 2017-07-24 15:19:50
    QT QML自定义等待提示框最近项目需要一个等待提示框,因为是使用QT写的项目,没有找到这方面资料,就自己封装了一个简单的demo,记录下来,以便以后使用。 使用的qml 中 Canvas自定义画图仿钉钉中的等待提示框。 ...

    QT QML自定义等待提示框

    最近项目需要一个等待提示框,因为是使用QT写的项目,没有找到这方面资料,就自己封装了一个简单的demo,记录下来,以便以后使用。
    使用的qml 中 Canvas自定义画图仿钉钉中的等待提示框。
    首先,使用Canvas 封装一个旋转进度条,也可以作为环形进度条单独使用(此段代码是参考网上环形进度条的资料)

    CustomAnimation.qml
    Canvas {
        id: canvas
        width: canvas.width
        height: canvas.height
        antialiasing: true
        property string text
        property color primaryColor: "orange"
        property color secondaryColor: "magenta"
        property real centerWidth: width / 2
        property real centerHeight: height / 2
        property real radius: Math.min(canvas.width - 10, canvas.height - 10) / 2
        property real minimumValue: 0
        property real maximumValue: 180
        property real currentValue: 0
        property real angle:currentValue * 3 * Math.PI/maximumValue 
        property real angleOffset: - Math.PI / 2
        onPrimaryColorChanged: requestPaint()
        onSecondaryColorChanged: requestPaint()
        onMinimumValueChanged: requestPaint()
        onMaximumValueChanged: requestPaint()
        onCurrentValueChanged: requestPaint()
        onPaint: {
                var ctx = getContext("2d");
                ctx.save();
                ctx.clearRect(0, 0, canvas.width, canvas.height);
                ctx.beginPath();
                ctx.lineWidth = 3;
                ctx.strokeStyle = secondaryColor;
                ctx.arc(canvas.centerWidth,
                        canvas.centerHeight,
                        canvas.radius,
                        canvas.angleOffset,
                        canvas.angleOffset + canvas.angle);
                ctx.stroke();
                ctx.restore();
        }
    }

    接着,创建一个视图,作为进度条的父视图,并添加动画。添加 stop 方法,调用方法时,停止动画

    QWaitTooltip.qml
    Rectangle{
        id:rect
        radius: width / 2
        property int i: 0
        color:"#C0C0C0"
        property bool isStop:false
    
        Rectangle {
            id: rectangle
            anchors.centerIn: parent
            width: parent.width - 6
            height: width
            radius: width / 2
            CustomAnimation{//动画视图
                id:customAnimation
                width: parent.width - 6
                height: width
                anchors.centerIn: parent
                currentValue: rotation - i;
            }
            RotationAnimation{//旋转动画
                id:rotationAnimation
                target: customAnimation
                from:i
                to:i + 90
                direction: RotationAnimation.Clockwise
                duration: 3000
                onStopped: {
                    console.log("是否停止",isStop);
                    if(isStop) return;
                    i += 90;
                    rotationAnimation.start();
                }
            }
        }
        Component.onCompleted: {
            rotationAnimation.start();
        }
        function stop(){
            console.log("调用停止动画",isStop);
            isStop = true;
            console.log("是否停止+++++",isStop);
            rotationAnimation.stop();
            console.log("是否停止-------",isStop);
            numberAnimation.start();
        }
        NumberAnimation {//缩小动画
            id:numberAnimation
            target: rect;
            property: "scale"; to: 0.2;
            duration: 500
            onStopped: {
                isShowWeb = true;
            }
        }
    }

    剩下的就很简单了,直接调用就可以了,停止动画就不写了,随便写个按钮,在点击方法里面调用stop() 就可以了。

    main.qml
    QWaitTooltip{
            id:waitTooltip
            anchors.horizontalCenter: parent.horizontalCenter
            anchors.top: parent.top
            anchors.topMargin:  100
            width: 40
            height: 40
    }    
    
    至此,就完成了。主要代码都在这了。
    没怎么写过博客,随便写写。主要只是有些代码,QT也是新手,还有很多不懂的,有大神路过,可以指导一下。先谢过了。
    
    展开全文
  • Qt 自定义提示框

    2021-04-15 17:22:46
    } 调用举例: //退出提示框 if(m_msgBox){ delete m_msgBox; } m_msgBox=new MsgBox(3,QStringLiteral("正在试图结束程序"),this); if(m_msgBox->exec()==0) { event->ignore(); return; } // 警告框 if(m_msgBox){...

    新建 msgbox.h 文件,代码如下

    #ifndef MSGBOX_H
    #define MSGBOX_H
    
    #include <QPushButton>
    #include <QLabel>
    #include <QMouseEvent>
    #include<QDialog>
    #include<QTimer>
    #include<QDebug>
    #include <windows.h>
    #include <QWidget>
    class MsgBox : public QDialog
    {
        Q_OBJECT
    public:
        MsgBox(int style,QString text,QWidget *parent = 0);
        ~MsgBox();
    public:
        QPushButton *okBtn;
        QPushButton *cancleBtn;
        QPushButton *closeBtn;
        QPushButton * msgBtn;
        QLabel * titleLabel;
        QLabel *askLabel;
    
    protected:
        QPoint move_point;                                    //移动的距离
        bool mouse_press;                                    //鼠标按下
        void mousePressEvent(QMouseEvent *qevent);            //鼠标按下事件
        void mouseReleaseEvent(QMouseEvent *qevent);         //鼠标释放事件
        void mouseMoveEvent(QMouseEvent *qevent);             //鼠标移动事件
    
    public slots:
        void okBtn_press();
        void cancleBtn_press();
        void closeBtn_press();
        void closeWin();
    };
    #endif // MSGBOX_H
    

    创建msgbox.cpp 文件,代码如下

    #include "msgbox.h"
    
    MsgBox::MsgBox(int style, QString text, QWidget *parent):QDialog(parent)
    {
        this->resize(332,167);
      //获取主界面的宽度
        int width = this->width();
        int height = this->height();
        setStyleSheet("QWidget{background-color: rgb(219,229,245);}");
      //初始化为未按下鼠标左键
    
      //设置标题栏隐藏
        this->setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog);
        titleLabel = new QLabel(this);
        titleLabel->setGeometry(0,0,width,30);
        if(style==1)
            titleLabel->setText(QStringLiteral("  警告  "));
        else
            titleLabel->setText(QStringLiteral("  提示  "));
        titleLabel->setStyleSheet("QLabel{font-family :微软雅黑;font-size : 5em;color : rgb(255,255,255);background-color: rgb(139,159,185); border-radius:0px;}");
    
        closeBtn = new QPushButton(this);
        closeBtn->setGeometry(width-30, 6, 20, 20);
        closeBtn->setStyleSheet("QPushButton{image:url(:/images/images/close.png);background: transparent;border:none;}QPushButton:hover{image:url(:/images/images/closeHover.png);background: transparent;border:none;}");
    
        msgBtn = new QPushButton(this);
        msgBtn->setGeometry(25,56,44,44);
        if(style == 1)      //警告
            msgBtn->setStyleSheet("QPushButton{image:url(:/images/images/warning.png);background: transparent;border:none;}");
        else if(style == 2)  //提示
            msgBtn->setStyleSheet("QPushButton{image:url(:/images/images/information.png);background: transparent;border:none;}");
        else if(style == 3)  //询问
            msgBtn->setStyleSheet("QPushButton{image:url(:/images/images/question.png);background: transparent;border:none;}");
        else if(style == 4)  //错误
            msgBtn->setStyleSheet("QPushButton{image:url(:/images/images/error.png);background: transparent;border:none;}");
    
        askLabel = new QLabel(this);
        askLabel->setGeometry(95,52,width,50);
        askLabel->setText(text);
        askLabel->setStyleSheet("QLabel{font-family :微软雅黑;font-size:20px;}");
    
        okBtn=new QPushButton(this);
        if(style==3)
            okBtn->setGeometry(90,119,85,30);
        else
            okBtn->setGeometry(135,119,85,30);
    
        okBtn->setText(QStringLiteral("确定"));
        okBtn->setStyleSheet("QPushButton{border:1px groove gray;border-radius:4px;border-color: rgb(139,159,185);}QPushButton:hover{border-radius:4px;background-color: rgb(119,146,183);}QPushButton:pressed{border-radius:4px;background-color: rgb(139,159,185);}");
    
        cancleBtn=new QPushButton(this);
        cancleBtn->setGeometry(187,119,85,30);
        cancleBtn->setText(QStringLiteral("取消"));
        cancleBtn->setStyleSheet("QPushButton{border:1px groove gray;border-radius:4px;border-color: rgb(139,159,185);}QPushButton:hover{border-radius:4px;background-color: rgb(119,146,183);}QPushButton:pressed{border-radius:4px;background-color: rgb(139,159,185);}");
        if(style == 3)
            cancleBtn->show();
        else
            cancleBtn->hide();
    
        connect(okBtn,SIGNAL(clicked()),this,SLOT(okBtn_press()));
        connect(closeBtn,SIGNAL(clicked()),this,SLOT(closeBtn_press()));
        connect(cancleBtn,SIGNAL(clicked()),this,SLOT(cancleBtn_press()));
    
    }
    MsgBox::~MsgBox()
    {
        delete okBtn;
        delete cancleBtn;
        delete closeBtn;
        delete msgBtn;
        delete titleLabel;
        delete askLabel;
    }
    
    void MsgBox::mousePressEvent(QMouseEvent *qevent)
    {
        if(qevent->button() == Qt::LeftButton)
        {
            mouse_press = true;
            //鼠标相对于窗体的位置(或者使用event->globalPos() - this->pos())
            move_point = qevent->pos();;
        }
    }
    void MsgBox::mouseMoveEvent(QMouseEvent *qevent)
    {
        //若鼠标左键被按下
        if(mouse_press)
        {
            //鼠标相对于屏幕的位置
            QPoint move_pos = qevent->globalPos();
            //移动主窗体位置
            this->move(move_pos - move_point);
        }
    }
    void MsgBox::mouseReleaseEvent(QMouseEvent *qevent)
    {
        //设置鼠标为未被按下
        mouse_press = false;
    }
    
    void MsgBox::okBtn_press()
    {
        this->accept();
    }
    void MsgBox::cancleBtn_press()
    {
        this->reject();
    }
    void MsgBox::closeBtn_press()
    {
        close();
    }
    

    调用举例:

    //退出提示框
        if(m_msgBox){
            delete m_msgBox;
        }
        m_msgBox=new MsgBox(3,QStringLiteral("正在试图结束程序"),this);
        if(m_msgBox->exec()==0)
        {
            event->ignore();
            return;
        }
    // 警告框
        if(m_msgBox){
             delete m_msgBox;
         }
         m_msgBox=new MsgBox(1,QStringLiteral("请选择固件文件"),this);
         m_msgBox->exec();
    

    在这里插入图片描述
    在这里插入图片描述

    图标资源:

    链接:https://pan.baidu.com/s/1BIaY5k394nxavn9BRfWLUQ
    提取码:mlfg

    展开全文
  • Qt自定义MessageBox提示框

    千次阅读 2016-11-18 11:47:35
    概述: 在做项目时,我们经常会用到QMessageBox这个控件,但有时候Qt自己提供的...消息提示框的控件类,有什么不对的地方,希望大家一起交流! 头文件: /** * @brief 自定义MessageBox * @file custommessagebox.h *

    概述:

    在做项目时,我们经常会用到QMessageBox这个控件,但有时候Qt自己提供的不能

    满足我们项目的需求,于是打算用自己定义的MessageBox。下面是自己定义的一个

    消息提示框的控件类,有什么不对的地方,希望大家一起交流!

    头文件:

    /**
      *  @brief    自定义MessageBox
      *  @file     custommessagebox.h
      *  @author   奋斗Andy
      *  @version  1.0(版本号)
      *  @date     2016-08-03
      */
    #ifndef _CUSTOM_MESSAGEBOX_H_
    #define _CUSTOM_MESSAGEBOX_H_
    
    #include <QtGui>
    #include <QDialog>
    
    /**
     * @brief 自定义消息提示框类
     */
    class CCustomMessageBox : public QDialog
    {
    	Q_OBJECT
    public:
    
        /**
         * @brief 自定义枚举类型 消息的类型
         */
        enum CUSTOM_MESSAGE_TYPE{
            CUSTOM_MESSAGE_NOICON = 0,  /**< 无 */
            CUSTOM_MESSAGE_QUESTION,    /**< 询问 */
            CUSTOM_MESSAGE_INFORMATION, /**< 信息 */
            CUSTOM_MESSAGE_WARNING,     /**< 警告 */
            CUSTOM_MESSAGE_CRITICAL,   /**< 错误 */
    	};
    
        /**
         * @brief 构造函数
         * @param type [in] 消息类型
         * @param strTitle [in]标题
         * @param strInfo [in] 消息内容
         * @param parent [in] 父类窗口
         * @param flags [in] 窗口标志
         */
        CCustomMessageBox(CUSTOM_MESSAGE_TYPE type, const QString &strTitle, const QString &strInfo,QWidget *parent = 0,
                         Qt::WindowFlags flags = Qt::CustomizeWindowHint | Qt::WindowTitleHint);
    
        ~CCustomMessageBox();
        
        /**
         * @brief 设置显示内容
         * @param strInfo [in] 信息内容
         */
        void setTextInfo(const QString &strInfo);
    
        /**
         * @brief 这是一个重载函数
         * @see CCustomMessageBox::setTextInfo
         * @param strTitle [in] 标题
         * @param strInfo [in] 信息内容
         */
        void setTextInfo(const QString &strTitle, const QString &strInfo);
        
        /**
         * @brief 这是一个重载函数
         * @see CCustomMessageBox::setTextInfo
         * @param type[in] 消息的类型
         * @param strTitle [in] 标题
         * @param strInfo [in] 信息内容
         */
        void setTextInfo(CUSTOM_MESSAGE_TYPE type, const QString &strTitle, const QString &strInfo);
    
    private:
        /**
         * @brief 初始化
         * @param strInfo [in] 信息内容
         */
        void initialize(const QString &strInfo);
        
        /**
         * @brief 布局
         */
        void alignment();
    
    private:
    	QLabel *m_pLabelIcon;  /**< 提示信息类型图标 */
        QLabel *m_pLabelInfo;  /**< 提示信息 */
        QToolButton *m_pBtnYes; /**< 是(确定)按扭 */
        QToolButton *m_pBtnNo;  /**< 否(取消)按扭 */
        CUSTOM_MESSAGE_TYPE m_eCustomType; /**< 自定义类型  */
     };
    
    #endif //_CUSTOM_MESSAGEBOX_H_
    

    源文件:

    #include "custommessagebox.h"
    
    #define LAYOUT_SPACING 20
    #define DEFAULT_HEIGHT  (100)
    #define DEFAULT_WIDTH	(350)
    #define MIN_WEIGHT		(100)
    #define MIN_WIDTH		(150)
    #define FONT_SIZE	    (14)
    
    CCustomMessageBox::CCustomMessageBox(CUSTOM_MESSAGE_TYPE type, const QString &strTitle, const QString &strInfo,QWidget *parent, Qt::WindowFlags flags)
    	:QDialog(parent, flags), m_eCustomType(type)
    {
    	initialize(strInfo);
        	alignment();
    	setWindowTitle(strTitle);
    	resize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
    	setMinimumSize(MIN_WIDTH, MIN_WEIGHT);
    }
    CCustomMessageBox::~CCustomMessageBox()
    {
    
    }
    
    //设置标签的内容
    void CCustomMessageBox::setTextInfo(const QString &strInfo)
    {
        if(!strInfo.isEmpty())
            m_pLabelInfo->setText(strInfo);
    }
    
    void CCustomMessageBox::setTextInfo(const QString &strTitle, const QString &strInfo)
    {
        if(strTitle.isEmpty())
            this->setWindowTitle(strTitle);
        
        if(!strInfo.isEmpty())
            m_pLabelInfo->setText(strInfo);
    }
    
    void CCustomMessageBox::setTextInfo(CUSTOM_MESSAGE_TYPE type, const QString &strTitle, const QString &strInfo)
    {
        if(strTitle.isEmpty())
            this->setWindowTitle(strTitle);
        
        if(!strInfo.isEmpty())
            m_pLabelInfo->setText(strInfo);
        else
            return ;
        
         m_eCustomType = type;
         QString fileName;
         switch(m_eCustomType){
         case CUSTOM_MESSAGE_QUESTION:
             fileName = ":/question";
             break;
         case CUSTOM_MESSAGE_INFORMATION:
             fileName = ":/information";
             break;
         case CUSTOM_MESSAGE_WARNING:
             fileName = ":/warning";
             break;
         case CUSTOM_MESSAGE_CRITICAL:
             fileName = ":/error";
             break;
         default:
             break;
         }
         QPixmap iconPix(fileName);
         m_pLabelIcon->setPixmap(iconPix);
    }
    
    
    void CCustomMessageBox::initialize(const QString &strInfo)
    {
    	m_pLabelIcon = new QLabel(this);
    	QString fileName;
    	switch(m_eCustomType){
    	case CUSTOM_MESSAGE_QUESTION:
    		fileName = ":/question";
    		break;
    	case CUSTOM_MESSAGE_INFORMATION:
    		fileName = ":/information";
    		break;
    	case CUSTOM_MESSAGE_WARNING:
    		fileName = ":/warning";
    		break;
    	case CUSTOM_MESSAGE_CRITICAL:
    		fileName = ":/error";
    		break;
    	default:
    		break;
    	}
    	
    	QPixmap iconPix(fileName);
    	m_pLabelIcon->setPixmap(iconPix);
    	m_pLabelIcon->setFixedSize(45,45);
    	m_pLabelIcon->setObjectName("msgBoxIconLabel");
    
    	QFont font;
    	font.setBold(true);
    	font.setFamily("Consolas");
    	font.setPixelSize(FONT_SIZE);
    
    	m_pLabelInfo = new QLabel(strInfo, this);
    	m_pLabelInfo->setWordWrap(true);
            m_pLabelInfo->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
            m_pLabelInfo->setFont(font);
    	m_pLabelInfo->setObjectName("msgBoxInfoLabel");
    
    
        m_pBtnYes = new QToolButton(this);
    	QPixmap yesPix(":/yes_Btn");
    	m_pBtnYes->setIcon(yesPix);
    	m_pBtnYes->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
    	m_pBtnYes->setIconSize(QSize(30, 30));
    	m_pBtnYes->setFont(font);
    	m_pBtnYes->setObjectName("msgBoxYesBtn");
    	m_pBtnYes->setFocusPolicy(Qt::NoFocus);
       
        if(m_eCustomType == CUSTOM_MESSAGE_QUESTION)
            m_pBtnYes->setText(tr("Yes"));
        else
            m_pBtnYes->setText(tr("Ok"));
    
        connect(m_pBtnYes, SIGNAL(released()), this, SLOT(accept()));
    
        if(m_eCustomType == CUSTOM_MESSAGE_QUESTION)
        {
    		m_pBtnNo = new QToolButton(this);
    		QPixmap noPix(":/no_Btn");
    		m_pBtnNo->setIcon(noPix);
    		m_pBtnNo->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
    		m_pBtnNo->setIconSize(QSize(30, 30));
            m_pBtnNo->setText(tr("No") );
    		m_pBtnNo->setFont(font);
    		m_pBtnNo->setObjectName("msgBoxNoBtn");
    		m_pBtnNo->setFocusPolicy(Qt::NoFocus);
    
            connect(m_pBtnNo, SIGNAL(released()), this, SLOT(reject()));
        }
    
    }
    //界面布局
    void CCustomMessageBox::alignment()
    {
    	QHBoxLayout *hbLabelLayout = new QHBoxLayout;
        hbLabelLayout->addWidget(m_pLabelIcon);
        hbLabelLayout->addWidget(m_pLabelInfo);
    
    	QHBoxLayout *hbBtnLayout = new QHBoxLayout;
    	hbBtnLayout->addStretch();
    	hbBtnLayout->addWidget(m_pBtnYes);
    	if(m_eCustomType == CUSTOM_MESSAGE_QUESTION){
    		hbBtnLayout->addStretch();
    		hbBtnLayout->addWidget(m_pBtnNo);
    	}
    	hbBtnLayout->addStretch();
    
    	QVBoxLayout *vbLayout = new QVBoxLayout;
    	vbLayout->addLayout(hbLabelLayout);
    	vbLayout->addSpacing(20);
    	vbLayout->addLayout(hbBtnLayout);
    
    	this->setLayout(vbLayout);
    }
    



    展开全文
  • Qt自定义提示信息—QQ风格

    万次阅读 2016-12-20 12:42:46
    一、简述在 Qt 之 自定义提示信息框—迅雷风格 这篇文章中讲述了如何实现迅雷风格的自定义提示框。那么在这一篇中我们就讲述一下如何实现QQ风格的提示框。整体代码与Qt 之 自定义提示信息框—迅雷风格 中的代码类似...
  • Qt自定义提示框(类似QMessageBox)

    千次阅读 2017-07-04 14:44:09
    自定义提示框   qmessagebox   qt自定义qmessagebox   it 分类: Qt  Qt中经常会用到提示框,用于交互操作!QMessageBox是被大多数人用到的,用起来是很方便,但是控件类型、...
  • Qt界面,当用户注册时输入的格式不正确时, 用TipBox弹框提示,来提示用户该如何输入:
  • Qt自定义提示信息—迅雷风格

    千次阅读 2016-12-13 22:25:24
    我们可以根据设置不同的参数来设置提示框标题、显示内容、显示图标、下方按钮个数,可以设置为输入框,也可以设置为模态/非模态对话框,实现了自定义的QMessageBox。目前实现了提示框基本功能,后续将继续拓展更多...
  • 1.单选项提示框 2.双选项提示框 3.滚动选项提示框 4.多组合选项提示框 5.密码提示框 二、环境 qt57 window10 三、正文 画布多少,直接说核心部分 1.单选项提示框 背景是哥图片,可以自定义为任何不...
  • 17 QT - 自定义消息框

    2019-10-18 15:04:31
    Qt 支持模态对话框和非模态对话框。 模态与非模态的实现: 使用QDialog::exec()实现应用程序级别的模态对话框 使用QDialog::open()实现窗口级别的模态对话框 使用QDialog::show()实现非模态对话框。 模态对话框 Qt...
  • Qt 实现了精美的 QQ和迅雷风格的自定义提示框,模仿度99.99%,支持模态和非模态窗口设置。详情可见博客文章 http://blog.csdn.net/goforwardtostep/article/details/53760769
  • QT自定义的气泡类型提示框

    千次阅读 2018-08-15 10:20:33
    由于项目需要,自定义了一个QT气泡显示的控件,参照了一部分网上的代码,自己也修改了许多,可支持四个不同的方向。不多说,上图: 代码如下: const int SHADOW_WIDTH = 15; // 窗口阴影宽度; const ...
  • QT自定义加载等待提示框 一、效果展示 二、源代码 #ifndef LOADINGDIALOG_H #define LOADINGDIALOG_H #include <QMovie> #include <QLabel> #include <QDialog> #include <QPainter> #...
  • MainWindow::MainWindow(QWidget*parent): QMainWindow(parent), ...setAttribute(Qt::WA_TranslucentBackground);//支持alpha通道!!! setAttribute(Qt::WA_NoSystemBackground);//不自动绘...
  • 该资源参考“朝十晚八”,实现自定义检索,动态添加提示列表数据
  • 网页右下角上经常会出现一些提示性的信息,B/S有的东西,C/S当然也可以有,就像QQ的消息提示一样! 实现一个类似的东西并不困难,只要想明白原理实现起来就很简单了!   实现原理: (1)显示:右下角缓慢弹出...
  • Qt自定义一个简单的ToolTip提示框

    千次阅读 2020-06-07 19:29:16
    因为 QToolTip 自定义样式不大方便,而且半透明也没法设置。Qt中的顶层 widget 好像默认是不支持透明样式的,可以设置: setWindowFlags(Qt::FramelessWindowHint); setAttribute(Qt::WA_TranslucentBackground,...
  • pyqt自定义消息框

    2018-12-20 17:41:26
    python qt 自定义消息框
  • Qt自定义搜索

    万次阅读 多人点赞 2015-12-19 10:44:14
    简述关于搜索,大家都经常接触。例如:浏览器搜索、Windows资源管理器搜索等。当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定。 方案一:调用QLineEdit现有接口void addAction(QAction * action, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,529
精华内容 1,811
关键字:

qt自定义消息提示框