//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. ios git 终端提交

    git status    //检查提交状态 git status On branch master  //检查分支 git branch   //查看分支 git add *   //添加所有本地更 ...

  2. IrfanView 4.36 中文版发布了

    IrfanView 4.36 简体中文便携版 小而快的图片浏览器 仅仅不到2M的小软件,功能却能与体积大到几十M的ACDSee相媲美!这个软件就是IrfanView.图片.音频.视频浏览,图片批量格式 ...

  3. 安卓普通类通过classloader访问资源文件

    Android studio不知道怎么设置,才可以在生成APK时把一些文件打包进去. 但是不管怎么样,放在res文件夹下的东西是一定得打包的.所以把一些资源文件放在res/raw这个文件夹里是科学的. ...

  4. 文件件监听器,android系统拍照功能调用后删除系统生成的照片

    先说说要实现的功能: android调用系统拍照功能实时 预览 删除 上传 保存 (用户不能再本地文件夹中看到拍的照片) 再说说遇到的问题: 1.调用系统拍照在系统自带的拍照文件夹中生成一张随机命名图 ...

  5. Chrome浏览器二维码生成插件

      猛击就可以使用啦->>>猛击使用   源码如下: 源码打包   源码: jquery-2.1.3.min.js jquery.qrcode.min.js https://gith ...

  6. C#调用自定义表类型参数

    -SQL SERVER生成测试环境: --创建测试DB CREATE database Sales; go USE Sales GO --创建表类型 IF TYPE_ID('LocalDT') IS ...

  7. Python基础s14-day1

    2016年7月23日"Python基础s14-Day1" Python是什么? Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),是一种面向对象.直译式 ...

  8. 烂泥:高负载均衡学习haproxy之TCP应用

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 在前几篇文章中,我们介绍了haproxy的配置参数,而且配置例子都是http协议(7层应用)的. 这篇文章,开始介绍haproxy的4层TCP应 ...

  9. 七、Android学习第六天——SQLite与文件下载(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 七.Android学习第六天——SQLite与文件下载 SQLite SQ ...

  10. 调整busybox中syslogd读取内核printk信息长度

    busybox 默认读取内核printk信息长度256, 通过CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE宏可调整, 如下: #cd busybox-1.21.1#m ...