qt学习之各种对话框的实现
2017-07-31 22:32
513 查看
1 目的:实现1 颜色对话框
2 实现颜色标准对话框
3 实现字体标准对话框
4 实现标准输入对话框
5 实现标准消息对话框
6 实现自定义对话框
代码实现
dialog.h
inputdialog.h
messagedialog.h
customdialog.cpp
dialog.cpp
inputdialog.cpp
messagedialog.cpp
遇到问题有
1 汉字编码问题,试了各种方法依旧不能解决最后使用
2 实现颜色标准对话框
3 实现字体标准对话框
4 实现标准输入对话框
5 实现标准消息对话框
6 实现自定义对话框
代码实现
dialog.h
#ifndef DIALOG_H #define DIALOG_H #include <QDialog> #include <QFileDialog> #include <QColorDialog> #include <QFontDialog> #include <QInputDialog> #include <QMessageBox> #include <QPushButton> #include <QLineEdit> #include <QFrame> #include "inputdialog.h" #include "messagedialog.h" #include "customdialog.h" class Dialog : public QDialog { Q_OBJECT public: Dialog(QWidget *parent = 0); ~Dialog(); private: QFileDialog *FileDialog; QColorDialog *ColorDialog; QFontDialog *FontDialog; InputDialog *MInputDialog; QMessageBox *MessageBox; QPushButton *FilePushButton; QPushButton *ColorPushButton; QPushButton *FontPushButton; QPushButton *InputButton; QPushButton *MegButton; QPushButton *CustomButton; QLineEdit *FileLineEdit; QFrame *ColorFrame; QLineEdit *FontEditDialog; MessageDialog *MyMessageDialog; private slots: void showFileDialog(); void showColorDialog(); void showFontDialog(); void showInputDialog(); void showMsgDialog(); void showCustomDialog(); }; #endif // DIALOG_Hcustomdialog.h
#ifndef CUSTOMDIALOG_H
#define CUSTOMDIALOG_H
#include <QLabel>
#include <QFrame>
#include <QPicture>
#include <QPushButton>
#include <QDialog>
class CustomDialog : public QDialog
{
Q_OBJECT
public:
CustomDialog(QWidget *parent = 0);
private:
QLabel *label;
QPushButton *YesButton;
QPushButton *NoButton;
QPushButton *CancelButton;
QFrame *photoFrame;
QPicture *photoPicture;
QLabel *photoLabel;
};
#endif // CUSTOMDIALOG_H
inputdialog.h
#ifndef INPUTDIALOG_H
#define INPUTDIALOG_H
#include <QDialog>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QInputDialog>
#include <QLabel>
class InputDialog : public QDialog
{
Q_OBJECT
public:
InputDialog(QWidget *parent = 0);
private:
QLabel *NameLabel;
QLabel *SexLabel;
QLabel *AgeLabel;
QLabel *GreadLabel;
QLabel *DNameLabel;
QLabel *DAgeLabel;
QLabel *DSexLabel;
QLabel *DGreadLabel;
QPushButton *NameButton;
QPushButton *SexButton;
QPushButton *AgeButton;
QPushButton *GreadButton;
private slots:
void alterName();
void alterSex();
void alterAge();
void alterGread();
};
#endif // INPUTDIALOG_H
messagedialog.h
#ifndef MESSAGEDIALOG_H
#define MESSAGEDIALOG_H
#include <QDialog>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QInputDialog>
#include <QLabel>
class MessageDialog : public QDialog
{
Q_OBJECT
public:
MessageDialog(QWidget *parent = 0);
private:
QLabel *SelMsgBox;
QPushButton *QuestionMsg;
QPushButton *WarningMsg;
QPushButton *AboutMsg;
QPushButton *InformationMsg;
QPushButton *CriticalMsg;
QPushButton *AboutQtMsg;
private slots:
void showQuestionMsg();
void showWarningMsg();
void showAboutMsg();
void showInformationMsg();
void showCriticalMsg();
void showAboutQtMsg();
};
#endif // MESSAGEDIALOG_H
customdialog.cpp
#include "customdialog.h"
#include <QDialog>
#include <QHBoxLayout>
#include <QGridLayout>
#include <QMessageBox>
CustomDialog::CustomDialog(QWidget *parent)
:QDialog(parent)
{
label = new QLabel("this Custom MsgBox!");
YesButton = new QPushButton("YES");
NoButton = new QPushButton("NO");
CancelButton = new QPushButton("CANCEL");
photoLabel = new QLabel;
this->setWindowTitle("CustomMsgBox");
photoLabel->setPixmap(QPixmap("qt.jpg"));
QHBoxLayout *bottonLayout = new QHBoxLayout;
bottonLayout->addWidget(YesButton, 0);
bottonLayout->addWidget(NoButton, 1);
bottonLayout->addWidget(CancelButton, 2);
QGridLayout *MainLayout = new QGridLayout(this);
MainLayout->addWidget(photoLabel, 0, 0);
MainLayout->addWidget(label, 0, 1);
MainLayout->addLayout(bottonLayout, 1, 0, 1, 1);
}
dialog.cpp
#include "dialog.h"
#include <QGridLayout>
#include <QFont>
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{
FileDialog = new QFileDialog(this, "open file dialog", "/", "yangsen(*.*)");//最后如果有多个则使用::比如:C++ Files(*.c++)::C Files(*.c)::HeadFiles(*.h)
ColorDialog = new QColorDialog;
FontDialog = new QFontDialog;
// InputDialog = new QInputDialog;
MessageBox = new QMessageBox;
ColorFrame = new QFrame;
ColorFrame->setFrameShape(QFrame::Box);//设置边框
ColorFrame->setAutoFillBackground(true);//设置颜色自动更新
//字体
FontEditDialog = new QLineEdit("Welcome");
FilePushButton = new QPushButton(QStringLiteral("文件标准对话框实例"));
ColorPushButton = new QPushButton(QStringLiteral("颜色标准对话框实例"));
FontPushButton = new QPushButton(QStringLiteral("字体标准对话框实例"));
InputButton = new QPushButton(QStringLiteral("标准输入对话框实例"));
MegButton = new QPushButton(QStringLiteral("标准消息对话框实例"));
CustomButton = new QPushButton(QStringLiteral("自定义消息对话框"));
FileLineEdit = new QLineEdit;
MInputDialog = new InputDialog();
MyMessageDialog = new MessageDialog();
QGridLayout *MainLayout = new QGridLayout(this);
MainLayout->addWidget(FilePushButton, 0, 0);
MainLayout->addWidget(ColorPushButton,1, 0);
MainLayout->addWidget(FontPushButton, 2, 0);
MainLayout->addWidget(InputButton, 3, 0);
MainLayout->addWidget(MegButton, 3, 1);
MainLayout->addWidget(CustomButton, 4, 0);
MainLayout->addWidget(FileLineEdit, 0, 1);
MainLayout->addWidget(ColorFrame, 1, 1);
MainLayout->addWidget(FontEditDialog, 2, 1);
// MainLayout->addWidget(
connect(FilePushButton, SIGNAL(clicked()), this, SLOT(showFileDialog()));
connect(ColorPushButton, SIGNAL(clicked()), this, SLOT(showColorDialog()));
connect(FontPushButton, SIGNAL(clicked()), this, SLOT(showFontDialog()));
connect(InputButton, SIGNAL(clicked()), this, SLOT(showInputDialog()));
connect(MegButton, SIGNAL(clicked()), this, SLOT(showMsgDialog()));
connect(CustomButton, SIGNAL(clicked()), this, SLOT(showCustomDialog()));
}
void Dialog::showFileDialog()
{
this->FileLineEdit->setText(FileDialog->getOpenFileName());
}
void Dialog::showColorDialog()
{
QColor color = this->ColorDialog->getColor();
if(color.isValid())
{
this->ColorFrame->setPalette(QPalette(color));
}
}
void Dialog::showFontDialog()
{
bool ok;
QFont font = this->FontDialog->getFont(&ok);
if(ok)
{
this->FontEditDialog->setFont(font);
}
}
void Dialog::showInputDialog()
{
// QString str = this->InputDialog->getText(this, "InputDialog", "Input:");
// QMessageBox::question(this, "Mesage box", str, QMessageBox::NoButton);
this->MInputDialog->show();
}
void Dialog::showMsgDialog()
{
this->MyMessageDialog->show();
}
void Dialog::showCustomDialog()
{
CustomDialog *customDialog = new CustomDialog;
customDialog->show();
}
Dialog::~Dialog()
{
}
inputdialog.cpp
#include "inputdialog.h"
#include <QGridLayout>
#include <QInputDialog>
#include <QDebug>
InputDialog::InputDialog(QWidget *parent)
: QDialog(parent)
{
NameLabel = new QLabel(QStringLiteral("姓名"));
SexLabel = new QLabel(QStringLiteral("性别"));
AgeLabel = new QLabel(QStringLiteral("年龄"));
GreadLabel = new QLabel(QStringLiteral("成绩"));
DNameLabel = new QLabel;
DAgeLabel = new QLabel;
DSexLabel = new QLabel;
DGreadLabel = new QLabel;
DNameLabel->setFrameStyle(QFrame::Sunken|QFrame::Panel);
DAgeLabel->setFrameStyle(QFrame::Sunken|QFrame::Panel);
DSexLabel->setFrameStyle(QFrame::Sunken|QFrame::Panel);
DGreadLabel->setFrameStyle(QFrame::Sunken|QFrame::Panel);
NameButton = new QPushButton(QStringLiteral("修改姓名"));
SexButton = new QPushButton(QStringLiteral("修改性别"));
AgeButton = new QPushButton(QStringLiteral("修改年龄"));
GreadButton = new QPushButton(QStringLiteral("修改成绩"));
QGridLayout *MainLayout = new QGridLayout(this);
MainLayout->addWidget(NameLabel, 0, 0);
MainLayout->addWidget(SexLabel, 1, 0);
MainLayout->addWidget(AgeLabel, 2, 0);
MainLayout->addWidget(GreadLabel, 3, 0);
MainLayout->addWidget(DNameLabel, 0, 1);
MainLayout->addWidget(DSexLabel, 1, 1);
MainLayout->addWidget(DAgeLabel, 2, 1);
MainLayout->addWidget(DGreadLabel, 3, 1);
MainLayout->addWidget(NameButton, 0, 2);
MainLayout->addWidget(SexButton, 1, 2);
MainLayout->addWidget(AgeButton, 2, 2);
MainLayout->addWidget(GreadButton, 3, 2);
connect(NameButton, SIGNAL(clicked()), this, SLOT(alterName()));
connect(SexButton, SIGNAL(clicked()), this, SLOT(alterSex()));
connect(AgeButton, SIGNAL(clicked()), this, SLOT(alterAge()));
connect(GreadButton, SIGNAL(clicked()), this, SLOT(alterGread()));
}
void InputDialog::alterName()
{
this->DNameLabel->setText(QInputDialog::getText(NULL, "InputTextDialog", "Name:"));
}
void InputDialog::alterSex()
{
QStringList SexList;
SexList << "man" << "woman";
this->DSexLabel->setText(QInputDialog::getItem(NULL, "ComboxDialog", "SEX:", SexList, 0, false));
}
void InputDialog::alterAge()
{
int age = QInputDialog::getInt(NULL, "IntDialog", "Age:", 0, 0, 200);
QString strAge;
// strAge = QString("%1").arg(age);
//strAge
strAge.sprintf("%d\0", age);
this->DAgeLabel->setText(strAge);
}
void InputDialog::alterGread()
{
float gread = QInputDialog::getDouble(NULL, "FloatDialog", "Gread:", 0);
QString strGread;
strGread.sprintf("%f\0", gread);
this->DGreadLabel->setText(strGread);
}
messagedialog.cpp
#include "messagedialog.h"
#include <QDialog>
#include <QMessageBox>
#include <QGridLayout>
MessageDialog::MessageDialog(QWidget *parent)
:QDialog(parent)
{
SelMsgBox = new QLabel("list:");
QuestionMsg = new QPushButton("QuestionMsg");
WarningMsg = new QPushButton("WarningMsg");
AboutMsg = new QPushButton("AboutMsg");
InformationMsg = new QPushButton("InformationMsg");
CriticalMsg = new QPushButton("CriticalMsg");
AboutQtMsg = new QPushButton("AboutQtMsg");
QGridLayout *MainLayout = new QGridLayout(this);
MainLayout->addWidget(SelMsgBox, 0, 0, 0, 1);
MainLayout->addWidget(QuestionMsg, 1, 0);
MainLayout->addWidget(WarningMsg, 1, 1);
MainLayout->addWidget(AboutMsg, 2, 0);
MainLayout->addWidget(InformationMsg, 2, 1);
MainLayout->addWidget(CriticalMsg, 3, 0);
MainLayout->addWidget(AboutQtMsg, 3, 1);
connect(QuestionMsg, SIGNAL(clicked()), this, SLOT(showQuestionMsg()));
connect(WarningMsg, SIGNAL(clicked()), this, SLOT(showWarningMsg()));
connect(AboutMsg, SIGNAL(clicked()), this, SLOT(showAboutMsg()));
connect(InformationMsg, SIGNAL(clicked()), this, SLOT(showInformationMsg()));
connect(CriticalMsg, SIGNAL(clicked()), this, SLOT(showCriticalMsg()));
connect(AboutQtMsg, SIGNAL(clicked()), this, SLOT(showAboutQtMsg()));
}
void MessageDialog::showQuestionMsg()
{
QMessageBox::question(NULL, "QuestionMsgBox", "you are pis?", QMessageBox::Yes, QMessageBox::No);
}
void MessageDialog::showWarningMsg()
{
QMessageBox::warning(NULL, "WarningMsgBox", "there have pig!", QMessageBox::Yes);
}
void MessageDialog::showAboutMsg()
{
QMessageBox::about(NULL, "AboutMsgBox", "i am superman!");
}
void MessageDialog::showInformationMsg()
{
QMessageBox::information(NULL, "InforMationMsgBox", "this InformationMsgBox");
}
void MessageDialog::showCriticalMsg()
{
QMessageBox::critical(NULL, "CriticalMsgBox", "this is Critical msg box!", QMessageBox::Yes, QMessageBox::No);
}
void MessageDialog::showAboutQtMsg()
{
QMessageBox::aboutQt(NULL);
}
遇到问题有
1 汉字编码问题,试了各种方法依旧不能解决最后使用
QStringLiteral("文件标准对话框实例")解决了
2 图片加载问题,用360浏览器下载了一张图片始终不能加载,后面发现是图片问题,图片需要到画图里面进行打开再另存为才行.
相关文章推荐
- QT学习 第一章:基本对话框--实现QQ抽屉效果
- QT学习——“运行”对话框的实现
- QT学习 第一章:基本对话框--各种信息框的使用
- VB用API实现各种对话框(总结)(转载)
- QT布局管理程序实现的学习
- Qt 学习(8)Qt Creator中鼠标键盘事件的处理实现自定义鼠标指针(转)
- C++ GUI Qt 编程(第二版)第8章 Diagram_1(实现主对话框)
- 简单图形编程的学习(1)---文字 (Qt实现)
- 在Qt中实现一个对话框
- QT学习 第一章:基本对话框-- HelloWorld
- QT学习 第一章:基本对话框--各类位置信息
- QT学习 第一章:基本对话框--使用进度条
- QT学习 第一章:基本对话框--利用Qt Designer设计一个对话框
- VB用API实现各种对话框(总结)
- C++ GUI Qt 编程(第二版)第8章 Diagram_2(实现主对话框)
- Qt 第二章 创建对话框--纯代码实现改变形状的对话框(二)
- [EntLib]微软企业库5.0 学习之路——第五步、介绍EntLib.Validation模块信息、验证器的实现层级及内置的各种验证器的使用方法——下篇
- QT学习笔记4---登陆对话框
- QT学习 第一章:基本对话框--基本对话框使用
- 简单图形编程的学习(2)---点 (Qt实现)