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.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();
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;
}