QT c++ 自定义 右小角冒泡对话框
时间: 2023-11-18 17:56:02 浏览: 140
基于QT的自定义对话框界面
您可以使用Qt中的QDialog和QPainter来创建自定义的右下角气泡对话框。以下是一个简单的实现:
1. 创建一个继承自QDialog的类,例如MyDialog。
2. 在MyDialog类中添加一个成员函数paintEvent(QPaintEvent *event),该函数用于绘制气泡对话框。
3. 在paintEvent函数中使用QPainter来绘制气泡对话框的形状和内容,例如使用drawRoundedRect绘制一个圆角矩形作为气泡框体,使用drawText绘制文本内容。
4. 在MyDialog类中添加一个成员函数showMessage(QString message),该函数用于显示气泡对话框并设置文本内容。
5. 在showMessage函数中使用move函数将气泡对话框定位到屏幕右下角,并使用show函数显示对话框。
下面是一个简单的实现示例:
```c++
#include <QDialog>
#include <QPainter>
#include <QTimer>
class MyDialog : public QDialog
{
Q_OBJECT
public:
MyDialog(QWidget *parent = nullptr)
: QDialog(parent)
{
setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowStaysOnTopHint);
setAttribute(Qt::WA_TranslucentBackground);
QTimer::singleShot(5000, this, &MyDialog::deleteLater);
}
void showMessage(QString message)
{
m_message = message;
show();
move(qApp->desktop()->availableGeometry().bottomRight() - frameGeometry().bottomRight());
}
protected:
void paintEvent(QPaintEvent *event) override
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
// 绘制气泡框体
QRect rect(0, 0, width(), height());
painter.setPen(Qt::NoPen);
painter.setBrush(QColor("#2C3E50"));
painter.drawRoundedRect(rect, 10, 10);
// 绘制文本内容
painter.setPen(QColor("#FFFFFF"));
painter.drawText(rect.adjusted(10, 10, -10, -10), Qt::AlignLeft | Qt::AlignTop, m_message);
}
private:
QString m_message;
};
```
您可以在需要显示气泡对话框的地方调用MyDialog的showMessage函数,例如:
```c++
MyDialog dialog;
dialog.showMessage("Hello, world!");
```
这将显示一个包含文本“Hello, world!”的右下角气泡对话框。
阅读全文