//logindlg.cpp
#include "logindlg.h" #include <QGridLayout>
#include <QHBoxLayout>
#include <QPalette> loginDlg::loginDlg(QWidget *parent) :
QDialog(parent)
{
/*默认没有点击登录*/
islogin=false; this->setWindowTitle(tr("登录")); label1=new QLabel(tr("用户ID:"));
edit1=new QLineEdit(); label2=new QLabel(tr("密码:"));
edit2=new QLineEdit();
/*将QLineEdit设置成密码框*/
edit2->setEchoMode(QLineEdit::Password); label3=new QLabel(tr("数据库名称:"));
edit3=new QLineEdit(); label4=new QLabel(tr("服务器IP:"));
edit4=new QLineEdit(); btn1=new QPushButton(tr("登录"));
connect(btn1,SIGNAL(clicked()),this,SLOT(btn1_click()));
btn2=new QPushButton(tr("取消"));
connect(btn2,SIGNAL(clicked()),this,SLOT(btn2_click())); QHBoxLayout *lay2=new QHBoxLayout();
lay2->addWidget(btn1);
lay2->addWidget(btn2); QGridLayout *lay1=new QGridLayout(this);
lay1->addWidget(label1,,);
lay1->addWidget(edit1,,);
lay1->addWidget(label2,,);
lay1->addWidget(edit2,,);
lay1->addWidget(label3,,);
lay1->addWidget(edit3,,);
lay1->addWidget(label4,,);
lay1->addWidget(edit4,,);
lay1->addLayout(lay2,,,,); /*设置第0列占位比为1*/
lay1->setColumnStretch(,);
/*设置第1列占位比为1*/
lay1->setColumnStretch(,);
/*设置边距*/
lay1->setMargin();
/*设置控件间的间距*/
lay1->setSpacing();
/*设置窗口大小不可以随意改变*/
lay1->setSizeConstraint(QLayout::SetFixedSize);
/*设置图片填充满对话框背景*/
this->setAutoFillBackground(true);
/*设置对话框背景图片*/
QPalette palette1;
palette1.setBrush(QPalette::Background,QBrush(QPixmap("12.jpg")));
this->setPalette(palette1);
} void loginDlg::btn1_click()
{
/*用户点击登录*/
islogin=true;
//获取用户输入信息
username=edit1->text();
userpass=edit2->text();
dbname=edit3->text();
ipaddr=edit4->text();
/*在登录方法只获取信息,在主函数中处理这些信息,这是为了安全*/
this->close();
/*不关闭对话框,Dialog的exec()方法会永远阻塞*/
} void loginDlg::btn2_click()
{
/*用户点击取消*/
islogin=false;
this->close();
}
//main.cpp
#include "mainwindow.h"
#include <QApplication> int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.resize(,);
w.show(); return a.exec();
}
//scriptdlg.cpp
#include "scriptdlg.h" #include <QHBoxLayout>
#include <QVBoxLayout> ScriptDlg::ScriptDlg(QWidget *parent) :
QDialog(parent)
{
isexec=false; this->setWindowTitle("执行SQL");
label1=new QLabel(tr("请输入SQL"));
tedit1=new QTextEdit();
btn1=new QPushButton(tr("执行"));
connect(btn1,SIGNAL(clicked()),this,SLOT(btn1_click()));
btn2=new QPushButton(tr("取消"));
connect(btn2,SIGNAL(clicked()),this,SLOT(btn2_click()));
QHBoxLayout *lay1=new QHBoxLayout();
lay1->addWidget(btn1);
lay1->addWidget(btn2);
QVBoxLayout *lay2=new QVBoxLayout();
lay2->addWidget(tedit1);
lay2->addLayout(lay1);
QHBoxLayout *lay3=new QHBoxLayout(this);
lay3->addWidget(label1);
lay3->addLayout(lay2); /*设置边距*/
lay3->setMargin();
/*设置间距*/
lay3->setSpacing();
} void ScriptDlg::btn1_click()
{
isexec=true;
//获取用户输入
this->strsql=tedit1->toPlainText();
this->close();
} void ScriptDlg::btn2_click()
{
this->close();
}

QT 数据库编程二的更多相关文章

  1. Qt——数据库编程

    一.概述 Qt提供了一个类似JDBC的数据库接口,需要为每个可以连接的特定数据库提供驱动程序,可以通过 QStringList QSqlDatabase::drivers() 知道当前版本的Qt哪些驱 ...

  2. Qt数据库编程1

    Qt中数据编程主要分为以下两点:1.利用qt提供类 访问数据库或者成为简单的数据库编程2.数据库编程中引入model/view编程模型 qt中数据库编程的步骤: 1.加载数据库驱动 QSqlDatab ...

  3. QT 数据库编程三

    //mainwindow.cpp #include "mainwindow.h" #include "logindlg.h" #include "sc ...

  4. Qt数据库编程_基本

    QtSql模块提供了一个平台无关且数据库无关的访问SQL数据库的接口. Qt中的每个数据库连接用一个QSqlDatabase对象来表示:Qt使用不同driver来和各种不同数据库的API进行通讯. Q ...

  5. QT 数据库编程四

    //vmysql.cpp #include "vmysql.h" #include <QMessageBox> Vmysql::Vmysql() { mysql_ini ...

  6. QT 网络编程二(UDP版本)

    QT的UdpSocket接收消息使用原则 第一步:new一个UdpSocket 第二步:调用UdpSocket的bind方法,同时指定端口号 第三步:使用connect将接收消息函数和UdpSocke ...

  7. QT基于model/view数据库编程2

    Qt中数据编程主要分为以下两点:1.利用qt提供类 访问数据库或者成为简单的数据库编程2.数据库编程中引入model/view编程模型 基于model/view数据库编程: qt提供model类: Q ...

  8. c++学习书籍推荐《C++ GUI Qt 4编程(第2版)》下载

    下载地址:点我 百度云及其他网盘下载地址:点我 编辑推荐 <C++ GUI Qt 4编程(第2版)>讲授的大量Qt4编程原理和实践,都可以轻易将其应用于Qt4.4.Qt4.5及后续版本的Q ...

  9. (九)文档和视图,Invalidate,数据库编程

    一.文档视图结构 文档类(CDocument):存储加载(读写)数据视图类(CView):显示和修改数据 1)单文档 a)文档模板:把框架窗口.文档.视图关联在一起b)文档类(CDocument): ...

随机推荐

  1. (转) 一步一步学习ASP.NET 5 (五)- TypeScript

    转发:微软MVP 卢建晖 的文章,希望对大家有帮助.原文:http://blog.csdn.net/kinfey/article/details/44568971 编者语 : 人总会多次犯错,历史上告 ...

  2. drop和delete的区别是什么

    当你不再需要该表时, 用 drop;当你仍要保留该表,但要删除所有记录时, 用 truncate;当你要删除部分记录时(always with a WHERE clause), 用 delete.

  3. js 百度地图

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. Spark SQL 之 Migration Guide

    Spark SQL 之 Migration Guide 支持的Hive功能 转载请注明出处:http://www.cnblogs.com/BYRans/ Migration Guide 与Hive的兼 ...

  5. MySQL-procedure(loop,repeat)

    在 MySQL-procedure(cursor,loop) 中将spam_keyword表中的文字全部分割到t表当中,且每一行的字都不重复,那t表可以用来当作一个小字典,只有1000来个字符,这次把 ...

  6. 烂泥:linux文件同步之rsync学习(一)

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 这几天刚好有空就打算开始学习linux下的文件同步软件rsync,在学习rsync时,我们可以分以下几个步骤进行: 1. rsync是什么 2. rsy ...

  7. SQLITE配置环境变量

      SQLITE配置环境变量和Java的配置其实是一样的,不过好像每个人配的时候不完全相同, 有的机器可以,另外一些机器同样的方法却行不通,总之思路是一样的多试几种,总有合适的参数 下面是我在配置时截 ...

  8. Linux screen 命令

    简单的来说 在screen里面敲的命令都是在后台的,所以不需要想bg那样,ctrl+z在bg把后台服务运行起来.而且下次可以直接进去screen作业的后台界面,可以看到我们过去敲的命令记录,即使你的C ...

  9. eclipse PermGen space解决方案

    转自网上 这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garb ...

  10. [Notes] Learn Python2.7 From Python Tutorial

    I have planed to learn Python for many times. I have started to learn Python for many times . Howeve ...