QT 自定义不规则提示框
2016-07-12 15:47
369 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/allan1234569/article/details/51889687
我们看到到过很多的输入提示的提示框,例如一个某个网站的注册界面,当用户注册时输入的格式不正确时,会有一个提示框弹出,来提示用户该如何输入。现在我们想在Qt中也实现这样一个效果,那么该如何实现呢?实现代码如下:
TipBox.h
#include <QWidget> #include <QLabel> class TipBox : public QWidget { Q_OBJECT public: explicit TipBox(QWidget *parent = 0); void setTipText(const QString& txt); //设置提示内容 signals: public slots: private: QLabel *tip_label; // QWidget interface protected: void paintEvent(QPaintEvent *); };
TipBox.cpp
#include "TipBox.h" #include <QLinearGradient> #include <QPainter> #include <QTimer> TipBox::TipBox(QWidget *parent) : QWidget(parent) { setFixedSize(180,70); setWindowFlags(Qt::FramelessWindowHint); setAttribute(Qt::WA_TranslucentBackground); tip_label = new QLabel(this); tip_label->move(1,16); tip_label->setFixedSize(this->width() - 2, this->height() - 17); } //设置提示内容 void TipBox::setTipText(const QString &txt) { tip_label->setText(txt); } //重绘窗口 void TipBox::paintEvent(QPaintEvent *) { QPainter painter2(this); painter2.setPen(Qt::red); //窗口框色 {//设置色调,渐变,可有可无 QLinearGradient linear2(rect().topLeft(), rect().bottomLeft()); linear2.setColorAt(0, QColor(247, 247, 250)); linear2.setColorAt(0.5, QColor(240, 242, 247)); linear2.setColorAt(1, QColor(233, 233, 242)); painter2.setBrush(linear2); } //自绘窗口 static const QPointF points[8] = {QPointF(15, 0), QPointF(15, 15), QPointF(0, 15), QPointF(0, this->height()-1), QPointF(this->width()-1, this->height()-1), QPointF(this->width()-1, 15), QPointF(30, 15), QPointF(15, 0)}; painter2.drawPolygon(points, 8); }
mainWindow.h
#include <QMainWindow> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_lineEdit_textChanged(const QString &arg1); private: Ui::MainWindow *ui; };
mainWindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" #include <TipBox.h> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_lineEdit_textChanged(const QString &arg1) { TipBox *tipbox = new TipBox(this); tipbox->setTipText("这是一个提示"); tipbox->move(ui->lineEdit->geometry().left(),ui->lineEdit->geometry().bottom() + 5); tipbox->show(); }
效果下如图所示:
相关文章推荐
- 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
- Android不规则图形点击提示选中不同区域
- 点击图片中不规则图形提示选中不同区域
- 安装VCenter提示数据库排序规则有问题
- XShell提示Connection closed by foreign host的问题 和 路由器分配IP的规则
- XShell提示Connection closed by foreign host的问题 和 路由器分配IP的规则
- uap用友nc开发选择业务单元提示:请检查该单据是否定义单据号规则
- jQuery Validate 表单验证插件----通过name属性来关联字段来验证,改变默认的提示信息,将校验规则写到 js 代码中
- Nginx添加rewrite规则解决Moodle 404 Not Found(含Moodle2.0)(实践下来并未成功,只是个提示)
- jquery validate的验证规则和验证提示
- jQuery Validate(2) - 默认、自定义校验规则与提示
- make内核提示:Makefile: *** 混合的隐含和普通规则。 停止。
- Wireshark网络抓包(一)——数据包、着色规则和提示
- Outlook express 2010 使用技巧(配置账户 导出和导入联系人 创建规则和来信提示 创建快速步骤)
- AutoCompleteTextView 实现自定义匹配规则提示
- AutoCompleteTextView 实现自定义匹配规则提示
- 英文切换为中文后,设置--提示音和通知--勿扰--自动规则,该菜单内的菜单名依然显示为英文,没有切换为中文。
- 路由转发规则 & Sitescope无限提示重启的BUG
- 微信小程序-配置普通链接二维码规则时一直提示【校验文件检查失败】
- 重写AutoCompleteTextView之实现自定义匹配规则 及 提示