Qt实现悬浮提示弹窗

该功能用来悬浮提示作用,悬浮2s之后自动关闭提示框

TispDlgView.h

#ifndef TIPSDLGVIEW_H
#define TIPSDLGVIEW_H

#include
#include “ui_TipsDlgView.h”

#include

class TipsDlgView : public QDialog
{
Q_OBJECT

public:
TipsDlgView(const QString &msg, QWidget *parent = 0);
~TipsDlgView();

/**
	Description:
		开启定时器
	@param	无
	@return	无
*/
void startTimer();

private:
Ui::TipsDlgView ui;

QTimer *m_pTimer;

private:

/**
	Description:
		初始化提示界面
	@param	msg	提示内容
	@return	无
*/
void initFrame(const QString &msg);

};

#endif // TIPSDLGVIEW_H

/我是分割线*****************
TispDlgView.cpp

#include “TipsDlgView.h”

#pragma region 构造函数 析构函数
/***********************************************************************/
/
构造函数 /
/
***********************************************************************/
TipsDlgView::TipsDlgView(const QString &msg, QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);

setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowStaysOnTopHint);
setAttribute(Qt::WA_TranslucentBackground);

initFrame(msg);

m_pTimer = new QTimer(this);
m_pTimer->setSingleShot(true);
connect(m_pTimer, &QTimer::timeout, this, [=](){this->close();});

}

/***********************************************************************/
/
析构函数 /
/
***********************************************************************/
TipsDlgView::~TipsDlgView()
{
if (this->m_pTimer != Q_NULLPTR)
{
this->m_pTimer->deleteLater();
}
}
#pragma endregion

#pragma region
/***********************************************************************/
/
启动定时器 /
/
***********************************************************************/
void TipsDlgView::startTimer()
{
this->m_pTimer->start(1500);
}
#pragma endregion

#pragma region
/***********************************************************************/
/
初始化提示界面 /
/
***********************************************************************/
void TipsDlgView::initFrame(const QString &msg)
{
ui.m_tipsLabel->setText(msg);
}
#pragma endregion

/调用举例***/
TipsDlgView dlg(“Image capture succeeded.”, this->topLevelWidget());
//dlg.setAttribute(Qt::WA_ShowModal,true);
dlg.startTimer();
dlg.exec();

Qt实现带有五个标签页的弹窗,你可以使用`QTabWidget`控件。`QTabWidget`是一个提供了选项卡功能的复合控件,它允许你在同一个窗口中放置多个页面,并且用户可以通过点击不同的标签来在这些页面间切换。以下是实现的步骤和示例代码: 1. 首先,在你的Qt项目中包含必要的头文件。 2. 创建一个`QTabWidget`对象,并将其设置为弹窗。 3. 为每个标签页创建一个`QWidget`作为容器。 4. 可以使用`addTab(QWidget *widget, const QString &label)`方法将每个容器添加到`QTabWidget`中,其中`label`是标签页的标题。 5. 将`QTabWidget`设置为主窗口的中心控件或者以模态对话框的形式显示。 示例代码如下: ```cpp #include <QTabWidget> #include <QWidget> #include <QPushButton> #include <QVBoxLayout> #include <QDialog> // 在类中定义一个QTabWidget成员变量 class MyDialog : public QDialog { Q_OBJECT public: MyDialog(QWidget *parent = nullptr) : QDialog(parent) { // 创建QTabWidget对象 QTabWidget *tabWidget = new QTabWidget(this); // 为每个标签页创建一个QWidget容器 QWidget *tab1 = new QWidget(tabWidget); QWidget *tab2 = new QWidget(tabWidget); QWidget *tab3 = new QWidget(tabWidget); QWidget *tab4 = new QWidget(tabWidget); QWidget *tab5 = new QWidget(tabWidget); // 可以在这里添加控件到每个标签页的容器中 // ... // 将每个标签页添加到QTabWidget中 tabWidget->addTab(tab1, "标签1"); tabWidget->addTab(tab2, "标签2"); tabWidget->addTab(tab3, "标签3"); tabWidget->addTab(tab4, "标签4"); tabWidget->addTab(tab5, "标签5"); // 设置QTabWidget为主窗口的中心控件 QVBoxLayout *layout = new QVBoxLayout(this); layout->addWidget(tabWidget); // 设置窗口大小和一些属性 resize(400, 300); setWindowTitle("五标签页弹窗"); } }; #include "main.moc" // 在主函数中,你可以创建MyDialog对象,并以模态方式显示 int main(int argc, char *argv[]) { QApplication app(argc, argv); MyDialog dialog; dialog.exec(); // 以模态方式执行对话框 return 0; } ``` 在上述代码中,我们定义了一个`MyDialog`类继承自`QDialog`,在构造函数中创建了`QTabWidget`和五个`QWidget`页面,每个页面都被添加了一个标签并设置到了`QTabWidget`中。之后,我们将`QTabWidget`作为中心控件添加到了弹窗的布局中,并在主函数中以模态方式显示了这个对话框。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值