|
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- #include<QScrollBar>
- #include<QSqlQuery>
- #include<QDebug>
- static int nCurScroller=0;//翻页时的当时滑动条位置
- static int pageValue = 10;// 一页显示条数
- static QString sqlList="select [name],[country],[schools] from t_UserCheck";
- static int orderNum=1;
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- ui->view->setSortingEnabled(true);
- QHeaderView *headerGoods= ui->view->horizontalHeader();
- headerGoods->setSortIndicator(0,Qt::AscendingOrder);
- headerGoods->setSortIndicatorShown(true);
- //headerGoods->setClickable(true);
- connect(headerGoods, SIGNAL(sectionClicked(int)),this, SLOT(orderButton(int)));
- ui->view->setSelectionMode(QAbstractItemView::SingleSelection);
- ui->view->setSelectionBehavior(QAbstractItemView::SelectRows);
- if(!CreateData())
- {
- QMessageBox::information(this, tr("提示"), tr("Sql Server数据库连接失败!"), tr("确定"));
- ui->Button_consql->setEnabled(true);
- }
- else
- {
- ui->Button_consql->setText(tr("数据库已连接!"));
- ui->Button_consql->setEnabled(false);
- initNum();
- }
- }
- MainWindow::~MainWindow()
- {
- delete ui;
- }
- bool MainWindow::CreateData()
- {
- db=QSqlDatabase::addDatabase("QODBC");
- // 注意,对于express版本数据库, 一定要加\\sqlexpress这种后缀
- //本地数据库
- QString dsn="DRIVER={SQL SERVER};SERVER=localhost;DATABASE=Zp_DateSoce";
- db.setDatabaseName(dsn);
- db.setUserName("sa");
- db.setPassword("123456");
- if(!db.open())
- {
- qDebug("Error:%s",qPrintable(db.lastError().text()));
- return false;
- }
- model = new QSqlQueryModel;
- QString tableSql=sqlList;
- model->setQuery(tableSql);
- initTable();
- return true;
- }
- void MainWindow::initTable()
- {
- model->setHeaderData(0, Qt::Horizontal, tr("姓名"));
- model->setHeaderData(1, Qt::Horizontal, tr("国家"));
- model->setHeaderData(2, Qt::Horizontal, tr("院校"));
- ui->view->setModel(model);
- ui->view->show();
- }
- void MainWindow::initNum() //显示总行数
- {
- while(model->canFetchMore())
- model->fetchMore();
- int num=model->rowCount();
- QString snum = QString::number(num, 10);
- ui->label_num->setText(snum);
- }
- void MainWindow::on_Button_consql_clicked()
- {
- if(!CreateData())
- {
- QMessageBox::information(this, tr("提示"), tr("Sql Server数据库连接失败!"), tr("确定"));
- ui->Button_consql->setEnabled(true);
- }
- else
- {
- ui->Button_consql->setText(tr("数据库已连接!"));
- initNum();
- }
- }
- void MainWindow::on_preButton_clicked() //下一页
- {
- int maxValue = ui->view->verticalScrollBar()->maximum();// 当前SCROLLER最大显示值25
- nCurScroller = ui->view->verticalScrollBar()->value();
- if(nCurScroller>0)
- ui->view->verticalScrollBar()->setSliderPosition(nCurScroller-pageValue);
- else
- ui->view->verticalScrollBar()->setSliderPosition(maxValue);
- }
- void MainWindow::on_nextButton_clicked() //上一页
- {
- int maxValue = ui->view->verticalScrollBar()->maximum();// 当前SCROLLER最大显示值25
- nCurScroller = ui->view->verticalScrollBar()->value();//获得当前scroller值
- if(nCurScroller<maxValue)
- ui->view->verticalScrollBar()->setSliderPosition(pageValue+nCurScroller);
- else
- ui->view->verticalScrollBar()->setSliderPosition(0);
- }
- void MainWindow::on_pushButton_clicked() //查询
- {
- QString search_name=ui->lineEdit_name->text();
- QString search_country=ui->lineEdit_country->text();
- QString search_school=ui->lineEdit_school->text();
- QString search_subject=ui->lineEdit_subject->text();
- if(search_name==NULL&&search_school==NULL&&search_country==NULL&&search_subject==NULL)
- {
- QMessageBox::information(this, tr("提示"), tr("请输入搜索条件!"), tr("确定"));
- }
- else
- {
- QString sqlQuery=sqlList+" where 1=1";
- if(search_country!=NULL)
- {
- sqlQuery=sqlQuery+" and "+QObject::tr("country like '%1'").arg(QString("%")+=search_country+=QString("%"));// 根据留学国家进行筛选
- }
- if(search_school!=NULL)
- {
- sqlQuery=sqlQuery+" and "+QObject::tr("schools like '%1'").arg(QString("%")+=search_school+=QString("%"));// 根据学校进行筛选
- }
- if(search_subject!=NULL)
- {
- sqlQuery=sqlQuery+" and "+QObject::tr("subject like '%1'").arg(QString("%")+=search_subject+=QString("%"));// 根据专业进行筛选
- }
- if(search_name!=NULL)
- {
- sqlQuery=sqlQuery+" and "+QObject::tr("backbroad like '%1'").arg(QString("%")+=search_name+=QString("%")); // 根据名字进行筛选 改为回国时间
- }
- //qDebug()<<sqlQuery;
- model->setQuery(sqlQuery);
- initTable();
- initNum();
- }
- }
- void MainWindow::on_lineEdit_country_editingFinished()
- {
- //ui->lineEdit_subject->setFocus();
- }
- void MainWindow::on_lineEdit_subject_editingFinished()
- {
- //ui->lineEdit_name->setFocus();
- }
- void MainWindow::on_lineEdit_school_editingFinished()
- {
- }
- void MainWindow::on_lineEdit_name_editingFinished() //Enter键响应
- {
- on_pushButton_clicked();
- }
- void MainWindow::on_pushButton_2_clicked() //重置按钮
- {
- ui->lineEdit_name->clear();
- ui->lineEdit_country->clear();
- ui->lineEdit_school->clear();
- ui->lineEdit_subject->clear();
- QString tableSql=sqlList;
- model->setQuery(tableSql);
- initTable(); //这样才能再次显示整个表的内容
- initNum();
- }
- void MainWindow::orderButton(int num)
- {
- qDebug()<<orderNum;
- if(orderNum==100) orderNum=0;
- if(orderNum%2==1)
- {
- ui->view->sortByColumn(num,Qt::AscendingOrder);
- //model->sort(num,Qt::AscendingOrder);
- orderNum++;
- qDebug()<<"AscendingOrder"<<num<<sqlList;
- }
- else
- {
- ui->view->sortByColumn(num,Qt::DescendingOrder);
- // model->sort(num,Qt::DescendingOrder);
- orderNum++;
- qDebug()<<"DescendingOrder"<<num;
- }
- }
用下面两个都试了试,都实现不了排序 - ui->view->sortByColumn(num,Qt::DescendingOrder);
- model->sort(num,Qt::DescendingOrder);
请问该怎么才能点击表格的头部进行排序呢?
|