Qt项目通用类----------消息对话框类

messagedialoghelper.h

#ifndef MESSAGEDIALOGHELPER_H
#define MESSAGEDIALOGHELPER_H

#include <QObject>
#include <QTableView>
#include <QInputDialog>
#include <QDate>

class MessageDialogHelper : public QObject
{
    Q_OBJECT
public:
    explicit MessageDialogHelper(QObject *parent = nullptr);
    //初始化表格
    static void initTableView(QTableView *tableView, int rowHeight = 25, bool headVisible = false, bool edit = false);

    //弹出消息框
    static void showMessageBoxInfo(const QString &info);
    //弹出错误框
    static void showMessageBoxError(const QString &info);
    //弹出询问框
    static bool showMessageBoxQuestion(const QString &info);

    //弹出输入框
    static QString showInputBox(const QString &title,
                                const QString &labelText,
                                const QString &defaultValue = QString());
    //弹出日期选择框
    static QString showDateSelect(const QString &format = "yyyy-MM-dd");

signals:

};

#endif // MESSAGEDIALOGHELPER_H

messagedialoghelper.cpp

#include "messagedialoghelper.h"
#include <QHeaderView>
#include <QMessageBox>
#include <QCalendarWidget>
#include <QPushButton>

MessageDialogHelper::MessageDialogHelper(QObject *parent) : QObject(parent)
{

}
void MessageDialogHelper::initTableView(QTableView *tableView, int rowHeight, bool headVisible, bool edit)
{
    //奇数偶数行颜色交替
    tableView->setAlternatingRowColors(true);
    //垂直表头是否可见
    tableView->verticalHeader()->setVisible(headVisible);
    //选中一行表头是否加粗
    tableView->horizontalHeader()->setHighlightSections(false);
    //最后一行拉伸填充
    tableView->horizontalHeader()->setStretchLastSection(true);
    //行标题最小宽度尺寸
    tableView->horizontalHeader()->setMinimumSectionSize(0);
    //行标题最大高度
    tableView->horizontalHeader()->setMaximumHeight(rowHeight);
    //默认行高
    tableView->verticalHeader()->setDefaultSectionSize(rowHeight);
    //选中时一行整体选中
    tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
    //只允许选择单个
    tableView->setSelectionMode(QAbstractItemView::SingleSelection);

    //表头不可单击
#if (QT_VERSION > QT_VERSION_CHECK(5,0,0))
    tableView->horizontalHeader()->setSectionsClickable(false);
#else
    tableView->horizontalHeader()->setClickable(false);
#endif

    //鼠标按下即进入编辑模式
    if (edit) {
        tableView->setEditTriggers(QAbstractItemView::CurrentChanged | QAbstractItemView::DoubleClicked);
    } else {
        tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
    }
}

void MessageDialogHelper::showMessageBoxInfo(const QString &info)
{
    QMessageBox msg;
    msg.setText(info);
    msg.setModal(true);
    msg.setStandardButtons(QMessageBox::Ok);
    msg.setWindowTitle("信息");
    msg.setIcon(QMessageBox::Information);
    msg.exec();
}

void MessageDialogHelper::showMessageBoxError(const QString &info)
{
    QMessageBox msg;
    msg.setText(info);
    msg.setModal(true);
    msg.setStandardButtons(QMessageBox::Ok);
    msg.setWindowTitle("错误");
    msg.setIcon(QMessageBox::Critical);
    msg.exec();
}

bool MessageDialogHelper::showMessageBoxQuestion(const QString &info)
{
    QMessageBox msg;
    msg.setText(info);
    msg.setModal(true);
    msg.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
    msg.setWindowTitle("提示");
    msg.setIcon(QMessageBox::Question);
    int result = msg.exec(); //此处注意QDialog下的exec和QMessageBox下的exec返回值不一样
    switch (result) {
    case QMessageBox::Yes: return true;
    case QMessageBox::No:  return false;
    default: return false;
    }
    return false;
}

QString MessageDialogHelper::showInputBox(const QString &title,
                                          const QString &labelText,
                                          const QString &defaultValue)
{
    QInputDialog input;
    input.setWindowTitle(title);
    input.setLabelText(labelText);
    input.setTextValue(defaultValue);
    input.setInputMode(QInputDialog::TextInput);
    int result = input.exec();
    switch (result) {
    case QDialog::Accepted: return input.textValue();
    case QDialog::Rejected:  return "";
    default: return "";
    }
    return "";
}

QString MessageDialogHelper::showDateSelect(const QString &format)
{
    QDialog parent;
    parent.setWindowTitle(tr("日期选择"));
    QCalendarWidget calendar(&parent);
    calendar.setVerticalHeaderFormat(QCalendarWidget::NoVerticalHeader);
    calendar.setHorizontalHeaderFormat(QCalendarWidget::ShortDayNames);
    calendar.adjustSize();
    calendar.raise();
    calendar.show();
    calendar.setSelectionMode(QCalendarWidget::SingleSelection);
    parent.setMaximumSize(calendar.width(), calendar.height()+100);
    parent.setMinimumSize(calendar.width(), calendar.height()+100);
    parent.exec();
    QString  selectDate = calendar.selectedDate().toString(format);
    return selectDate;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YanWenCheng_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值