Qt学习之Dialog
来源:互联网 发布:淘宝打字客服容易吗 编辑:程序博客网 时间:2024/05/14 04:26
//mydialog.h
#ifndef MYDIALOG_H#define MYDIALOG_H#include<QtGui/QDialog>//#include<QLineEdit>//也可以不要class QLineEdit;直接使用这种声明方式class QLineEdit;//该行代码的作用是告诉编译器,QlineEdit已经存在,这样做有如下好处//首先,它减小了头文件的大小,增加了编译的速度(特别是当头文件被其他头文件多次包含引用时);//其次,这样做可以避免因包含头文件的顺序不当而链接错误,特别是在大的工程当中更应该避免随意在//一个头文件中包含另一个头文件。class CMydialog:public QDialog{ Q_OBJECT //启动Qt元对象系统的一些特性(比如支持信号与槽) //它必须放置到类定义的私有区public: CMydialog(QWidget* = 0);//是构造函数,它指定了一个默认值为NULL 的指向QWidget的参数 //该形参定义了自定义对话框对象的父窗口部件,默认值NULL意味着 //自定义的对话框没有父窗口部件public slots: virtual void accept();private: QLineEdit* usrLineEdit; QLineEdit* pwLineEdit;};#endif // MYDIALOG_H
//mydialog.cpp
#include "mydialog.h"#include "QtGui/QtGui"//类CMydialog的构造函数CMydialog::CMydialog(QWidget* parent): QDialog(parent){ QLabel* usrLabel = new QLabel(trUtf8("用户名 :")); QLabel* pwdLabel = new QLabel(trUtf8("密码 :")); usrLineEdit = new QLineEdit; pwLineEdit = new QLineEdit; pwLineEdit->setEchoMode(QLineEdit::PasswordEchoOnEdit);//设置密码编辑框对象pwdLineEidt的内容显示方式为“×” /* 显示方式还有一下几种: *QLineEdit::Normal默认显示,显示用户输入的内容 *QLineEdit::Password显示星号 *QLineEdit::NoEcho不显示用会输入的内容 ×QLineEdit::PasswordEchoOnEdit仅仅用户在行编辑框里编辑文本 ×时,才显示用户输入的字符,而在用户完成编辑后以星号代替输入的内容 */ /*创建一个布局管理器对象,并将窗口部件添加到该布局管理器中 *gridlayout->addWidget将先前生成的标签和行编辑框添加到网络管理器QGriLayout中 *gridlayout->addWidget中有5个参数,第一个实参指出那个窗口部件将被放置在网络布局管理器中 *后四个参数确定了行编辑框对象在网络布局管理器的位置,前两个实参分别表示行和列的位置(行号和列号) *后两个分别表示行和列的跨度 *其实这里面位置信息都是相对的 */ QGridLayout* gridlayout = new QGridLayout; gridlayout->addWidget(usrLabel,0,0,1,1); gridlayout->addWidget(usrLineEdit,0,1,1,3); gridlayout->addWidget(pwdLabel,1,0,1,1); gridlayout->addWidget(pwLineEdit,1,1,1,3); /*创建两个按钮*/ QPushButton* okBtn =new QPushButton(trUtf8("确定")); QPushButton* cancelBtn =new QPushButton(trUtf8("取消")); /*创建水平布局管理器 *设置水平布局管理器对象内部窗口部件直接的间隔为60 *将两个按钮加入到水平管理器中 *按照两个部件的安放的先后顺序从左到右排布 */ QHBoxLayout* btnLauout =new QHBoxLayout; btnLauout->setSpacing(60); btnLauout->addWidget(okBtn); btnLauout->addWidget(cancelBtn); /* *创建垂直布局管理器 *该管理器将排布和管理先前创建的所有的布局管理器,进而完成对所有子窗口部件的管理 *dlgLayout->setMargin(40);设置边框的宽度为40 *dlgLayout->addStretch(40);设置内部直接的默认的距离为40,同时当上下拉伸对话框的高度时,该strech可以自由伸缩 *从而保证gridlayout和btnLauout管理器内部各窗口部件的高度已经彼此间的垂直距离保持不变 */ QVBoxLayout* dlgLayout = new QVBoxLayout; dlgLayout->setMargin(40); dlgLayout->addLayout(gridlayout); dlgLayout->addStretch(40); dlgLayout->addLayout(btnLauout); setLayout(dlgLayout); connect(okBtn,SIGNAL(clicked()),this,SLOT(accept())); connect(cancelBtn,SIGNAL(clicked()),this,SLOT(reject())); setWindowTitle(trUtf8("登录")); resize(300,200);}void CMydialog::accept(){ /*QString::trimmed()移除在字符串开头和结尾的空白字符*/ if(usrLineEdit->text().trimmed() == trUtf8("lcf") &&pwLineEdit->text() ==trUtf8("lcf")) { QDialog::accept(); } else { QMessageBox::warning(this,trUtf8("警告"), trUtf8("用户名或密码错误!!!"), QMessageBox::Yes); }}
//main.cpp
#include <QApplication>#include <QTranslator>#include <QProcess>#include <QLocale>#include <QLibraryInfo>#include <QDebug>#include <QtGui/QtGui>#include"mydialog.h"int main(int argc,char* argv[]){ QApplication app(argc, argv); QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030")); CMydialog mydialog; QMessageBox box; QTranslator translator; { QStringList environment = QProcess::systemEnvironment(); QString str; bool bFinded =false; foreach(str,environment) { if(str.startsWith("QTDIR=")) { bFinded =true; break; } } if(bFinded) { str=str.mid(6); bFinded =translator.load("qt_"+QLocale::system().name(), str.append("/translations")); if(bFinded) qApp->installTranslator(&translator); else { // qDebug() << QObject::trUtf8("没有中文"); box.setWindowTitle("warning"); box.setIcon(QMessageBox::Warning); box.setText("没有支持中文的国际化翻译软件!!"); box.setStandardButtons(QMessageBox::Yes); box.exec(); } } else { //qDebug() << QObject::trUtf8("必须设置"); box.setWindowTitle("warning"); box.setIcon(QMessageBox::Warning); box.setText("必须设置QTDIR环境变量!!"); box.setStandardButtons(QMessageBox::Yes); box.exec(); exit(1); } } return mydialog.exec();}
- Qt学习之Dialog
- 【Qt编程】Qt学习之Window and Dialog Widgets
- QT之对话框Dialog
- Dialog学习之旅
- qt-dialog
- Qt Dialog
- c++学习之路-----------dialog
- android学习之-自定义Dialog
- android学习之Dialog(二)
- Android开发学习之Dialog
- Android Dialog学习之 ApiDemos
- Android UI学习之Dialog
- 学习笔记之自定义Dialog
- Android基础 学习之Dialog
- android学习之自定义dialog
- qt学习之qt creator
- qt学习之qt安装
- Qt学习——基本对话框Q*Dialog类
- 一个简单的小软件,解放我们的鼠标
- arch完美升级glibc
- 黑马程序员~模拟银行业务调度系统
- 单链表分析
- PBRT阅读:第七章 采样和重构 第7.1节
- Qt学习之Dialog
- Arduino Mega_ADK 脉冲检测
- 也说建立保持时间(CPLD时序分析)
- 时间单位—关于秒的定义
- #if 0/#if 1 ... #endif”的作用
- Linux下创建和删除用户 切换用户
- PBRT阅读:第七章 采样和重构 第7.2-7.3节
- poj 2828 树状数组
- Android Dialog大全