Qt开发:自定义对话框

这篇具有很好参考价值的文章主要介绍了Qt开发:自定义对话框。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、添加自定义对话类框。

首先向该项目中添加Qt设计师界面类。界面模板选择 Dialog without Buttons,类名改为MyDialog。然后在设计模式中向窗口添加两个Push Button,并且分别更改其显示文本为“进入主界面”和“退出程序”

qt创建对话框,qt,ui,开发语言

qt创建对话框,qt,ui,开发语言 qt创建对话框,qt,ui,开发语言

qt创建对话框,qt,ui,开发语言 

qt创建对话框,qt,ui,开发语言 

 

 

void MyDialog::on_pushButton_clicked()
{
accept();
}

这个accept()函数是QDialog类中的一个槽,对于一个使用exec()函数实现的模态对话框,执行了这个槽就会隐藏这个模态对话框,并返回QDialog::Accepted 值,这里就是要使用这个值来判断是哪个按钮被按下了。与其对应的还有一个 reject()槽,它可以返回一个QDialog::Rejected值,前面的“退出程序按钮也可以关联这个槽。

二、另外一种自定义弹窗

qt创建对话框,qt,ui,开发语言

 

设置一对按键

可以在构造函数中设置两个按键的属性

// 确认取消按钮
ui->buttonBox->button(QDialogButtonBox::Ok)->setText("确定");
ui->buttonBox->button(QDialogButtonBox::Cancel)->setText("取消");

以下为自定义弹窗的头文件dialogmessage.h

#ifndef DIALOGMESSAGE_H
#define DIALOGMESSAGE_H
#include <QDialog>
typedef enum
{
MSG_INFO = 0,
MSG_WARNING,
MSG_ERROR,
} E_MSG_TYPE;
namespace Ui {
class DialogMessage;
}
class DialogMessage : public QDialog
{
Q_OBJECT
public:
explicit DialogMessage(QWidget *parent = nullptr);
~DialogMessage();
private:
Ui::DialogMessage *ui;
public:
/** 设置弹窗文本 */
void set_messageText(E_MSG_TYPE msgType, QString title, QString context);
/** 设置网络提示弹窗文本 */
void set_messageNetText(E_MSG_TYPE msgType, QString title, QString context);
/** 设置取消按键不显示 */
void set_cancelButtonHide();
/** 设置确定按键不显示 */
void set_okButtonHide();
/** 设置确定按键显示 */
void set_okButtonShow();
};
#endif // DIALOGMESSAGE_H

dialogmessage.cpp文件

#include <QPushButton>
#include "dialogmessage.h"
#include "ui_dialogmessage.h"
#include "style.h"
#include "text.h"
DialogMessage::DialogMessage(QWidget *parent) :
QDialog(parent),
ui(new Ui::DialogMessage)
{
ui->setupUi(this);
// 隐藏默认标题
this->setWindowFlags(Qt::FramelessWindowHint);
// 配置标题属性
QFont titleFont;
titleFont.setPixelSize(MSG_TITLE_FONT_SIZE);
titleFont.setFamily(MSG_TITLE_FONT_NAME);
titleFont.setBold(MSG_TITLE_FONT_BOLD_EN);
QColor titleColor;
titleColor.setRgb(MSG_TITLE_FONT_COLOR_R, MSG_TITLE_FONT_COLOR_G, MSG_TITLE_FONT_COLOR_B);
QPalette titlePalette;
titlePalette.setColor(QPalette::WindowText, titleColor);
ui->label_title->setFont(titleFont);
ui->label_title->setPalette(titlePalette);
// 设置内容属性
QFont contextFont;
contextFont.setPixelSize(MSG_CONTEXT_FONT_SIZE);
contextFont.setFamily(MSG_CONTEXT_FONT_NAME);
contextFont.setBold(MSG_CONTEXT_FONT_BOLD_EN);
QColor contextColor;
contextColor.setRgb(MSG_CONTEXT_FONT_COLOR_R, MSG_CONTEXT_FONT_COLOR_G, MSG_CONTEXT_FONT_COLOR_B);
QPalette contextPalette;
contextPalette.setColor(QPalette::WindowText, contextColor);
ui->label_context->setFont(contextFont);
ui->label_context->setPalette(contextPalette);
// 设置背景
QImage image(":/public/dialog_public.png");
QPixmap px = QPixmap::fromImage(image);
int w = ui->label_bg->width();
int h = ui->label_bg->height();
px = px.scaled(w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
ui->label_bg->setPixmap(px);
// 确认取消按钮
ui->buttonBox->button(QDialogButtonBox::Ok)->setText("确定");
ui->buttonBox->button(QDialogButtonBox::Cancel)->setText("取消");
#ifdef COMPILE_KYLIN
// 银河麒麟下弹窗设置透明无效,设置背景不能为黑色
this->setAutoFillBackground(true);
this->setWindowFlags(Qt::FramelessWindowHint);
this->setAttribute(Qt::WA_StyledBackground);
this->setWindowModality(Qt::ApplicationModal);
#else
this->setAttribute(Qt::WA_TranslucentBackground, true);
#endif
}
DialogMessage::~DialogMessage()
{
delete ui;
}
void DialogMessage::set_messageText(E_MSG_TYPE msgType, QString title, QString context)
{
ui->label_title->setText(title);

if(context.size()>=11)
{
context.insert(10,"\n");
}
if(context.size()>=22)
{
context.insert(21,"\n");
}

ui->label_context->setText(context);
switch(msgType)
{
case MSG_INFO:
ui->label_picture->setStyleSheet("background-image: url(:/public/info.png);");
break;
case MSG_WARNING:
ui->label_picture->setStyleSheet("background-image: url(:/public/warning.png);");
break;
case MSG_ERROR:
ui->label_picture->setStyleSheet("background-image: url(:/public/error.png);");
break;
}
}
void DialogMessage::set_messageNetText(E_MSG_TYPE msgType, QString title, QString context)
{
ui->label_title->setText(title);
ui->label_context->setGeometry(130,90,251,75);
ui->label_context->setText(context);

switch(msgType)
{
case MSG_INFO:
ui->label_picture->setStyleSheet("background-image: url(:/public/info.png);");
break;
case MSG_WARNING:
ui->label_picture->setStyleSheet("background-image: url(:/public/warning.png);");
break;
case MSG_ERROR:
ui->label_picture->setStyleSheet("background-image: url(:/public/error.png);");
break;
}
}
/** 设置取消按键不显示 */
void DialogMessage::set_cancelButtonHide()
{
ui->buttonBox->button(QDialogButtonBox::Cancel)->hide();
}
/** 设置确定按键不显示 */
void DialogMessage::set_okButtonHide()
{
ui->buttonBox->button(QDialogButtonBox::Ok)->hide();
}
/** 设置确定按键显示 */
void DialogMessage::set_okButtonShow()
{
ui->buttonBox->button(QDialogButtonBox::Ok)->show();
}

UI文件

qt创建对话框,qt,ui,开发语言

 

使用

DialogMessage my_msgDialog; //创建对象
my_msgDialog.done(QDialog::Rejected); //关闭显示

my_msgDialog.set_messageText(MSG_INFO,"网络参数设置", "网络参数设置成功,请手动重启软件后参数生效");

my_msgDialog.set_cancelButtonHide();
int ret = my_msgDialog.exec();
if( ret == QDialog::Rejected) //点击取消按钮走这里
{
return;
}

 进群领取qt开发学习资料以及技术交流  在下方↓↓↓↓↓↓↓↓文章来源地址https://www.toymoban.com/news/detail-676711.html

到了这里,关于Qt开发:自定义对话框的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python Qt6快速入门-自定义对话框和标准对话框

    对话框是有用的 GUI 组件,可以与用户进行交流(因此得名对话框)。 它们通常用于文件打开/保存、设置、首选项或不适合应用程序主 UI 的功能。 它们是位于主应用程序前面的小模态(或阻塞)窗口,直到它们被关闭。 Qt 为最常见的用例提供

    2024年02月03日
    浏览(53)
  • Pyside6(3): 自动生成UI的Qt参数输入对话框

    参数输入界面是桌面软件开发最繁琐的部分之一。特别是当系统中存在多种可编辑的数值模型时,由于各个模型的字段不同,每个字段的输入类型也不同,需要制作不同的UI,使用不同的UI控件,无疑会耗费大量时间,同时拓展性也非常差,因为每增加一个数值模型,都需要制

    2024年02月03日
    浏览(58)
  • 【QT入门】 Qt自定义控件与样式设计之QPushButton实现鼠标悬浮按钮弹出对话框

    往期回顾: 【QT入门】 Qt自定义控件与样式设计之qss选择器-CSDN博客 【QT入门】 Qt自定义控件与样式设计之QLineEdit的qss使用-CSDN博客 【QT入门】Qt自定义控件与样式设计之QPushButton常用qss-CSDN博客 鼠标悬浮弹出对话框的功能:最终要实现纯代码设计出一个音量按钮,当鼠标悬浮

    2024年04月23日
    浏览(41)
  • C++ Qt开发:标准Dialog对话框组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍标准对话框 QInputDialog 、 QFileDialog 这两种对话框组件的常用方法及灵活运用。

    2024年02月04日
    浏览(60)
  • Qt应用开发(基础篇)——输入对话框 QInputDialog

             QInputDialog 类继承于 QDialog ,是一个简单方便的对话框,用于从用户获取单个值。         对话框窗口 QDialog           QInputDialog输入对话框 带有一个文本标签、一个输入框和标准按钮。输入内容可以字符、数字和选项,文本标签用来告诉用户应该要输入什

    2024年02月10日
    浏览(47)
  • Qt应用开发(基础篇)——对话框窗口 QDialog

            QDialog 类继承于QWidget,是Qt基于对话框窗口(消息窗口 QMessageBox 、颜色选择窗口 QColorDialog 、文件选择窗口 QFileDialog 等)的基类。           QDialog 窗口是顶级的窗口,一般情况下,用来当做用户短期任务(确认、输入、选择)或者和用户交流(提示、错误、警告、进

    2024年02月10日
    浏览(56)
  • Qt5开发及实例V2.0-第四章Qt基本对话框

    首先介绍标准文件对话框(QFileDialog)、标准颜色对话框(QColorDialog)、标准字体对话框(QFontDialog)、标准输入对话框(QInputDialog)及标准消息对话框(QMessageBox),运行效果如图4.1所示。 按如图4.1所示依次执行如下操作。 (1)单击“文件标准对话框实例”按钮,弹出“文

    2024年02月07日
    浏览(110)
  • Qt应用开发(基础篇)——文件选择对话框 QFileDialog

             QFileDialog 类继承于 QDialog ,提供了一个允许用户选择文件或目录的对话框。         对话框窗口 QDialog          QFileDialog 文件选择对话框允许用户在当前文件系统中选择一个或者多个文件或者文件路径,使用静态函数创建是很简便的方式,比如:      

    2024年02月09日
    浏览(52)
  • 06-1_Qt 5.9 C++开发指南_对话框与多窗体设计_标准对话框

    在一个完整的应用程序设计中,不可避免地会涉及多个窗体、对话框的设计和调用,如何设计和调用这些对话框和窗体是搞清楚一个庞大的应用程序设计的基础。本章将介绍对话框和多窗体设计、调用方式、数据传递等问题,主要包括以下几点。 Qt 提供的标准对话框的使用,

    2024年02月13日
    浏览(54)
  • QT调用不同UI界面响应,对话框跳转到主页面UI,用信号与槽传递信息,两级信号传递

    在MainWindow界面有一个按键”新建”,点击后需要生成一个输入对话框,实例用到了processDialog类对象。 我新建一行数据完成后,需要更新MainWindow表格的视图,此时就需要调用写在MainWIndow下的函数MainWindow::showProcess(vectorPCB* readyQueue) 但是如果实例化一个MainWidow对象,此时修改的

    2024年02月12日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包