mirror of
https://gitee.com/drabel/LibQQt.git
synced 2025-01-04 10:18:44 +08:00
update vegetables price
This commit is contained in:
parent
16d0f82c4c
commit
afe8df7ab9
4
QQt.pro
4
QQt.pro
@ -22,9 +22,9 @@ SUBDIRS = src/qqt.pro
|
||||
#SUBDIRS += examples/tabwidgetexamples
|
||||
#SUBDIRS += examples/svgtest
|
||||
#SUBDIRS += examples/treeviewexample
|
||||
#SUBDIRS += examples/qrcodeexample
|
||||
#
|
||||
SUBDIRS += examples/qrcodeexample
|
||||
#SUBDIRS += examples/gumbo_query_test
|
||||
SUBDIRS += examples/gumbo_query_test
|
||||
|
||||
#can't support ios
|
||||
#SUBDIRS += examples/qqtprintsupportexample
|
||||
|
@ -1,13 +1,21 @@
|
||||
#include "mainwindow.h"
|
||||
#include "ui_mainwindow.h"
|
||||
|
||||
#include "QDebug"
|
||||
#include <GumboQueryDocument.h>
|
||||
#include <GumboQuerySelection.h>
|
||||
#include <GumboQueryNode.h>
|
||||
#include <QStringList>
|
||||
#include <QStringListIterator>
|
||||
|
||||
MainWindow::MainWindow(QWidget* parent) :
|
||||
QMainWindow(parent),
|
||||
ui(new Ui::MainWindow)
|
||||
MainWindow::MainWindow ( QWidget* parent ) :
|
||||
QMainWindow ( parent ),
|
||||
ui ( new Ui::MainWindow )
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->setupUi ( this );
|
||||
|
||||
m_client = new QQtWebWorkClient ( this );
|
||||
connect ( m_client, SIGNAL ( replyFinished ( QNetworkReply* ) ),
|
||||
this, SLOT ( replyFinished ( QNetworkReply* ) ) );
|
||||
|
||||
QStringList vl;
|
||||
vl << "西葫芦";
|
||||
@ -35,13 +43,15 @@ MainWindow::MainWindow(QWidget* parent) :
|
||||
vl << "蒜薹";
|
||||
vl << "豆角";
|
||||
vl << "茴香";
|
||||
ui->lw->addItems(vl);
|
||||
m_mapVege["西葫芦"] = "xihulu" ;
|
||||
m_mapVege["土豆"] = "tudou";
|
||||
ui->lw->addItems ( m_mapVege.keys() );
|
||||
|
||||
|
||||
connect(ui->lw, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
|
||||
this, SLOT(currentItemChanged(QListWidgetItem*, QListWidgetItem*)));
|
||||
connect ( ui->lw, SIGNAL ( currentItemChanged ( QListWidgetItem*, QListWidgetItem* ) ),
|
||||
this, SLOT ( currentItemChanged ( QListWidgetItem*, QListWidgetItem* ) ) );
|
||||
|
||||
ui->lw->setCurrentRow(0);
|
||||
ui->lw->setCurrentRow ( 0 );
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
@ -49,12 +59,106 @@ MainWindow::~MainWindow()
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void MainWindow::currentItemChanged(QListWidgetItem* cur, QListWidgetItem* prev)
|
||||
void MainWindow::currentItemChanged ( QListWidgetItem* cur, QListWidgetItem* prev )
|
||||
{
|
||||
qDebug() << cur << prev;
|
||||
if (!cur)
|
||||
|
||||
if ( !cur )
|
||||
return;
|
||||
|
||||
QString url = QString("http://www.baidu.com/s?wd=%1%2").arg(cur->text()).arg("价格");
|
||||
|
||||
//QString url = QString ( "http://www.baidu.com/s?wd=%1%2" ).arg ( cur->text() ).arg ( "价格" );
|
||||
QString url = QString ( "http://nong.gold600.com/cx?pz=%1&c=shandong" ).arg ( m_mapVege[cur->text()] );
|
||||
m_client->sendGetRequest ( url );
|
||||
}
|
||||
|
||||
void MainWindow::replyFinished ( QNetworkReply* reply )
|
||||
{
|
||||
//pline() << reply->readAll();
|
||||
int nHttpCode = reply->attribute ( QNetworkRequest::HttpStatusCodeAttribute ).toInt(); //http返回码
|
||||
|
||||
if ( nHttpCode == 200 ) //成功
|
||||
{
|
||||
pline() << "success";
|
||||
}
|
||||
else
|
||||
{
|
||||
pline() << "fail";
|
||||
return;
|
||||
}
|
||||
|
||||
QByteArray resultContent = reply->readAll();
|
||||
//pline() << QString ( resultContent );
|
||||
/*用页面源文件的编码来进行解码 GB2312 or UTF-8*/
|
||||
QTextCodec* pCodec = QTextCodec::codecForName ( "GB2312" );
|
||||
QString strResult = pCodec->toUnicode ( resultContent );
|
||||
//pline() << strResult;
|
||||
QTextCodec* pCodec2 = QTextCodec::codecForName ( "GB2312" );
|
||||
QByteArray strResult2 = pCodec2->fromUnicode ( strResult );
|
||||
QString txt0 = strResult2;
|
||||
//pline() << txt0;
|
||||
QString cc = resultContent;
|
||||
//pline() << cc.toLatin1().constData();
|
||||
|
||||
GumboQueryDocument doc;
|
||||
doc.parse ( strResult.toLocal8Bit().constData() );
|
||||
GumboQuerySelection s = doc.find ( "table" );
|
||||
|
||||
GumboQueryNode pNode = s.nodeAt ( 0 );
|
||||
QString txt = QString::fromStdString ( pNode.text() );
|
||||
|
||||
//pline() << txt;
|
||||
QStringList tList = txt.split ( "\n", QString::SkipEmptyParts );
|
||||
|
||||
|
||||
for ( int i = 0; i < tList.count(); i++ )
|
||||
{
|
||||
QString txt = tList.at ( i );
|
||||
txt = txt.trimmed();
|
||||
|
||||
if ( txt.isEmpty() )
|
||||
{
|
||||
tList.removeAt ( i );
|
||||
i--;
|
||||
continue;
|
||||
}
|
||||
|
||||
tList[i] = txt;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
for ( QStringList::Iterator itor = tList.begin();
|
||||
itor != tList.end(); itor++ )
|
||||
{
|
||||
QString txt = ( QString ) * itor;
|
||||
|
||||
if ( "" == txt.trimmed() )
|
||||
{
|
||||
tList.erase ( itor );
|
||||
itor--;
|
||||
continue;
|
||||
}
|
||||
|
||||
*itor = txt.trimmed();
|
||||
}
|
||||
*/
|
||||
|
||||
ui->tb->clear();
|
||||
ui->tb->setColumnCount ( 5 );
|
||||
ui->tb->horizontalHeader()->setSectionResizeMode ( QHeaderView::ResizeToContents );
|
||||
|
||||
|
||||
for ( int i = 0; i < tList.count(); )
|
||||
{
|
||||
ui->tb->setRowCount ( i / 5 + 1 );
|
||||
|
||||
for ( int j = 0; j < 5; j++ )
|
||||
{
|
||||
QString cc = tList.value ( i );
|
||||
qDebug() << i / 5 << j << cc;
|
||||
QTableWidgetItem* item = new QTableWidgetItem ( cc );
|
||||
ui->tb->setItem ( i / 5, j, item );
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4,8 +4,10 @@
|
||||
#include <QMainWindow>
|
||||
#include <QListWidget>
|
||||
|
||||
namespace Ui
|
||||
{
|
||||
#include "qqtcore.h"
|
||||
#include "qqtwebworkclient.h"
|
||||
|
||||
namespace Ui {
|
||||
class MainWindow;
|
||||
}
|
||||
|
||||
@ -14,13 +16,15 @@ class MainWindow : public QMainWindow
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit MainWindow(QWidget* parent = 0);
|
||||
explicit MainWindow ( QWidget* parent = 0 );
|
||||
~MainWindow();
|
||||
private slots:
|
||||
void currentItemChanged(QListWidgetItem*, QListWidgetItem*);
|
||||
|
||||
void currentItemChanged ( QListWidgetItem*, QListWidgetItem* );
|
||||
void replyFinished ( QNetworkReply* reply );
|
||||
private:
|
||||
Ui::MainWindow* ui;
|
||||
QQtWebWorkClient* m_client;
|
||||
QMap<QString, QString> m_mapVege;
|
||||
};
|
||||
|
||||
#endif // MAINWINDOW_H
|
||||
|
@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>889</width>
|
||||
<height>444</height>
|
||||
<width>647</width>
|
||||
<height>330</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@ -32,7 +32,13 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTableWidget" name="tb"/>
|
||||
<widget class="QTableWidget" name="tb">
|
||||
<column>
|
||||
<property name="text">
|
||||
<string>fff</string>
|
||||
</property>
|
||||
</column>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
@ -41,7 +47,7 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>889</width>
|
||||
<width>647</width>
|
||||
<height>22</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
@ -28,7 +28,7 @@ QQtWebWorkClient::QQtWebWorkClient ( QObject* parent ) : QNetworkAccessManager (
|
||||
this, SLOT ( networkSessionConnected() ) );
|
||||
}
|
||||
|
||||
void QQtWebWorkClient::getRequest ( QString& strUrl )
|
||||
void QQtWebWorkClient::sendGetRequest ( QString& strUrl )
|
||||
{
|
||||
QQtWebWorkSession* s0 = new QQtWebWorkSession ( this );
|
||||
|
||||
@ -52,6 +52,7 @@ void QQtWebWorkClient::getRequest ( QString& strUrl )
|
||||
}
|
||||
|
||||
s0->m_pNetworkReply = get ( netRequest ); //发起get请求
|
||||
m_listWebWorkSession.push_back ( s0 );
|
||||
/*下面关联信号和槽*/
|
||||
|
||||
/*下载完成后开始一阵一阵堆取数据*/
|
||||
@ -71,7 +72,7 @@ void QQtWebWorkClient::getRequest ( QString& strUrl )
|
||||
s0->m_pTimer->start ( );
|
||||
}
|
||||
|
||||
void QQtWebWorkClient::postRequest ( QString& strUrl )
|
||||
void QQtWebWorkClient::sendPostRequest ( QString& strUrl )
|
||||
{
|
||||
//post
|
||||
// QString strBody; //http body部分,可封装参数信息
|
||||
@ -101,9 +102,11 @@ void QQtWebWorkClient::finished ( QNetworkReply* reply )
|
||||
if ( !s0 )
|
||||
return;
|
||||
|
||||
pline() << s0->m_pNetworkReply << s0->m_pTimer;
|
||||
|
||||
s0->m_pTimer->stop();
|
||||
s0->m_pNetworkReply->deleteLater();
|
||||
m_listWebWorkSession.removeOne ( s0 );
|
||||
|
||||
}
|
||||
|
||||
void QQtWebWorkClient::authenticationRequired ( QNetworkReply* r, QAuthenticator* a )
|
||||
|
@ -17,27 +17,15 @@
|
||||
* Multi New Protocol 全双工 QWebSocket
|
||||
* need ssl
|
||||
*/
|
||||
class QQtWebWorkSession : QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit QQtWebWorkSession ( QObject* parent ) :
|
||||
QObject ( parent ) {}
|
||||
virtual ~QQtWebWorkSession() {}
|
||||
|
||||
QNetworkReply* m_pNetworkReply; //封装请求返回信息
|
||||
QTimer* m_pTimer; //请求超时计时器
|
||||
QString m_strUrl; //记录当前请求的url
|
||||
} ;
|
||||
|
||||
class QQtWebWorkSession;
|
||||
class QQTSHARED_EXPORT QQtWebWorkClient : public QNetworkAccessManager
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit QQtWebWorkClient ( QObject* parent = 0 );
|
||||
|
||||
void getRequest ( QString& strUrl );
|
||||
void postRequest ( QString& strUrl );
|
||||
void sendGetRequest ( QString& strUrl );
|
||||
void sendPostRequest ( QString& strUrl );
|
||||
//void installProtocol();
|
||||
//void uninstallProtocol();
|
||||
|
||||
@ -70,4 +58,17 @@ private:
|
||||
QList<QQtWebWorkSession*> m_listWebWorkSession;
|
||||
};
|
||||
|
||||
class QQtWebWorkSession : QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit QQtWebWorkSession ( QObject* parent ) :
|
||||
QObject ( parent ) {}
|
||||
virtual ~QQtWebWorkSession() {}
|
||||
|
||||
QNetworkReply* m_pNetworkReply; //封装请求返回信息
|
||||
QTimer* m_pTimer; //请求超时计时器
|
||||
QString m_strUrl; //记录当前请求的url
|
||||
} ;
|
||||
|
||||
#endif // QQTWEBWORKCLIENT_H
|
||||
|
@ -4,11 +4,11 @@
|
||||
#include "qqtsql.h"
|
||||
#include "qqt-qt.h"
|
||||
|
||||
QQTMPTableWidget::QQTMPTableWidget(QWidget* parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::QQTMPTableWidget)
|
||||
QQtMPTableWidget::QQtMPTableWidget ( QWidget* parent ) :
|
||||
QWidget ( parent ),
|
||||
ui ( new Ui::QQtMPTableWidget )
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->setupUi ( this );
|
||||
|
||||
m_db = newDatabaseConn();
|
||||
|
||||
@ -18,57 +18,57 @@ QQTMPTableWidget::QQTMPTableWidget(QWidget* parent) :
|
||||
altColor = true;
|
||||
resizeMode = QHeaderView::ResizeToContents;
|
||||
|
||||
ui->btnJump->setFixedWidth(30);
|
||||
ui->btnLeft->setFixedWidth(30);
|
||||
ui->btnRight->setFixedWidth(30);
|
||||
ui->btnLeftHead->setFixedWidth(30);
|
||||
ui->btnRightHead->setFixedWidth(30);
|
||||
ui->leNum->setFixedWidth(40);
|
||||
ui->btnJump->setHidden(true);
|
||||
ui->leNum->setHidden(true);
|
||||
ui->btnRightHead->setHidden(true);
|
||||
ui->btnRight->setHidden(true);
|
||||
ui->btnLeftHead->setHidden(true);
|
||||
ui->btnLeft->setHidden(true);
|
||||
ui->btnJump->setFixedWidth ( 30 );
|
||||
ui->btnLeft->setFixedWidth ( 30 );
|
||||
ui->btnRight->setFixedWidth ( 30 );
|
||||
ui->btnLeftHead->setFixedWidth ( 30 );
|
||||
ui->btnRightHead->setFixedWidth ( 30 );
|
||||
ui->leNum->setFixedWidth ( 40 );
|
||||
ui->btnJump->setHidden ( true );
|
||||
ui->leNum->setHidden ( true );
|
||||
ui->btnRightHead->setHidden ( true );
|
||||
ui->btnRight->setHidden ( true );
|
||||
ui->btnLeftHead->setHidden ( true );
|
||||
ui->btnLeft->setHidden ( true );
|
||||
|
||||
}
|
||||
|
||||
QQTMPTableWidget::~QQTMPTableWidget()
|
||||
QQtMPTableWidget::~QQtMPTableWidget()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void QQTMPTableWidget::setDB(QString db)
|
||||
void QQtMPTableWidget::setDB ( QString db )
|
||||
{
|
||||
m_name = db;
|
||||
setDatabaseName(m_db, m_name);
|
||||
setDatabaseName ( m_db, m_name );
|
||||
}
|
||||
|
||||
void QQTMPTableWidget::setTable(QString table)
|
||||
void QQtMPTableWidget::setTable ( QString table )
|
||||
{
|
||||
m_table = table;
|
||||
}
|
||||
|
||||
void QQTMPTableWidget::setRelation(int column, const QSqlRelation& relation)
|
||||
void QQtMPTableWidget::setRelation ( int column, const QSqlRelation& relation )
|
||||
{
|
||||
m_columnRelation.insert(column, relation);
|
||||
m_columnRelation.insert ( column, relation );
|
||||
}
|
||||
|
||||
void QQTMPTableWidget::query(QString filter)
|
||||
void QQtMPTableWidget::query ( QString filter )
|
||||
{
|
||||
ptime(); //3ms
|
||||
|
||||
//high?
|
||||
QQTSleep(478);
|
||||
QQTSleep ( 478 );
|
||||
|
||||
QSqlQuery query(m_db);
|
||||
query.exec(QString("select count(*) from %1").arg(m_table));
|
||||
QSqlQuery query ( m_db );
|
||||
query.exec ( QString ( "select count(*) from %1" ).arg ( m_table ) );
|
||||
|
||||
int num = 0;
|
||||
|
||||
if (query.next())
|
||||
if ( query.next() )
|
||||
{
|
||||
num = query.value(0).toInt();
|
||||
num = query.value ( 0 ).toInt();
|
||||
pline() << "record num:" << num;
|
||||
}
|
||||
|
||||
@ -76,7 +76,7 @@ void QQTMPTableWidget::query(QString filter)
|
||||
|
||||
int pageNum = 0;
|
||||
|
||||
if (num % m_numPerPage > 0)
|
||||
if ( num % m_numPerPage > 0 )
|
||||
pageNum = num / m_numPerPage + 1;
|
||||
else
|
||||
pageNum = num / m_numPerPage;
|
||||
@ -90,7 +90,7 @@ void QQTMPTableWidget::query(QString filter)
|
||||
/*
|
||||
* 首次做检查,每隔10张*14条
|
||||
*/
|
||||
if (m_pageNum > ui->stWidgetPage->count())
|
||||
if ( m_pageNum > ui->stWidgetPage->count() )
|
||||
pix = m_pageNum - ui->stWidgetPage->count() + 10;
|
||||
#else
|
||||
/*
|
||||
@ -101,250 +101,250 @@ void QQTMPTableWidget::query(QString filter)
|
||||
#endif
|
||||
|
||||
// pix >= 1 start work
|
||||
for (int i = 0; i < pix; i++)
|
||||
for ( int i = 0; i < pix; i++ )
|
||||
{
|
||||
//ptime();//89ms
|
||||
QQtTableWidget* page = new QQtTableWidget(this);
|
||||
QQtTableWidget* page = new QQtTableWidget ( this );
|
||||
//ptime();//2ms
|
||||
page->setDB(m_name);
|
||||
page->setDB ( m_name );
|
||||
//ptime();//8ms
|
||||
page->setTable(m_table);
|
||||
page->setTable ( m_table );
|
||||
//ptime();//14ms
|
||||
//query
|
||||
//ptime();//3ms
|
||||
QAbstractItemModel* m_model = page->model();
|
||||
|
||||
for (int i = 0; i < m_model->columnCount(); i++)
|
||||
m_model->setHeaderData(
|
||||
for ( int i = 0; i < m_model->columnCount(); i++ )
|
||||
m_model->setHeaderData (
|
||||
i, Qt::Horizontal,
|
||||
m_headerData.value(i, m_model->headerData(i, Qt::Horizontal).toString()));
|
||||
m_headerData.value ( i, m_model->headerData ( i, Qt::Horizontal ).toString() ) );
|
||||
|
||||
//ptime();//1ms
|
||||
page->setSelectionMode(selectionMode);
|
||||
page->setAlternatingRowColors(altColor);
|
||||
page->setSelectionMode ( selectionMode );
|
||||
page->setAlternatingRowColors ( altColor );
|
||||
#if QT_VERSION < QT_VERSION_CHECK(5,0,0)
|
||||
page->horizontalHeader()->setResizeMode(resizeMode);
|
||||
page->horizontalHeader()->setResizeMode ( resizeMode );
|
||||
#else
|
||||
page->horizontalHeader()->setSectionResizeMode(resizeMode);
|
||||
page->horizontalHeader()->setSectionResizeMode ( resizeMode );
|
||||
#endif
|
||||
|
||||
//ptime();//0ms
|
||||
for (int i = 0; i < m_model->columnCount(); i++)
|
||||
for ( int i = 0; i < m_model->columnCount(); i++ )
|
||||
#if QT_VERSION < QT_VERSION_CHECK(5,0,0)
|
||||
page->horizontalHeader()->setResizeMode(i, m_resizeMode.value(i, resizeMode));
|
||||
page->horizontalHeader()->setResizeMode ( i, m_resizeMode.value ( i, resizeMode ) );
|
||||
|
||||
#else
|
||||
page->horizontalHeader()->setSectionResizeMode(i, m_resizeMode.value(i, resizeMode));
|
||||
page->horizontalHeader()->setSectionResizeMode ( i, m_resizeMode.value ( i, resizeMode ) );
|
||||
#endif
|
||||
|
||||
//ptime();//QHash(338ms) QMap(372ms) 400ms(QHash等几乎不耗时)
|
||||
for (int i = 0; i < m_model->columnCount(); i++)
|
||||
page->setColumnWidth(i, m_columnWidth.value(i));
|
||||
for ( int i = 0; i < m_model->columnCount(); i++ )
|
||||
page->setColumnWidth ( i, m_columnWidth.value ( i ) );
|
||||
|
||||
//ptime();
|
||||
for (int i = 0; i < m_model->columnCount(); i++)
|
||||
page->setColumnHidden(i, m_columnHidden.value(i));
|
||||
for ( int i = 0; i < m_model->columnCount(); i++ )
|
||||
page->setColumnHidden ( i, m_columnHidden.value ( i ) );
|
||||
|
||||
//ptime();//219ms
|
||||
ui->stWidgetPage->addWidget(page);
|
||||
ui->stWidgetPage->addWidget ( page );
|
||||
//ptime();
|
||||
}
|
||||
|
||||
for (int i = 0; i < m_pageNum; i++)
|
||||
for ( int i = 0; i < m_pageNum; i++ )
|
||||
{
|
||||
QQtTableWidget* page = (QQtTableWidget*)(ui->stWidgetPage->widget(i));
|
||||
page->query(QString("%1 limit %2 offset %3")
|
||||
.arg(filter)
|
||||
.arg(m_numPerPage)
|
||||
.arg(i * m_numPerPage));
|
||||
QQtTableWidget* page = ( QQtTableWidget* ) ( ui->stWidgetPage->widget ( i ) );
|
||||
page->query ( QString ( "%1 limit %2 offset %3" )
|
||||
.arg ( filter )
|
||||
.arg ( m_numPerPage )
|
||||
.arg ( i * m_numPerPage ) );
|
||||
}
|
||||
}
|
||||
|
||||
int QQTMPTableWidget::pageNum()
|
||||
int QQtMPTableWidget::pageNum()
|
||||
{
|
||||
return m_pageNum;
|
||||
}
|
||||
|
||||
int QQTMPTableWidget::currentPage()
|
||||
int QQtMPTableWidget::currentPage()
|
||||
{
|
||||
return ui->stWidgetPage->currentIndex() + 1;
|
||||
}
|
||||
|
||||
void QQTMPTableWidget::setCurrentPage(int index)
|
||||
void QQtMPTableWidget::setCurrentPage ( int index )
|
||||
{
|
||||
if (index < 1 || index > m_pageNum)
|
||||
if ( index < 1 || index > m_pageNum )
|
||||
return;
|
||||
|
||||
ui->stWidgetPage->setCurrentIndex(index - 1);
|
||||
ui->lbPos->setText(QString("%1/%2").arg(index).arg(m_pageNum));
|
||||
ui->stWidgetPage->setCurrentIndex ( index - 1 );
|
||||
ui->lbPos->setText ( QString ( "%1/%2" ).arg ( index ).arg ( m_pageNum ) );
|
||||
}
|
||||
|
||||
void QQTMPTableWidget::setRecordNumPerPage(int num)
|
||||
void QQtMPTableWidget::setRecordNumPerPage ( int num )
|
||||
{
|
||||
m_numPerPage = num;
|
||||
}
|
||||
|
||||
void QQTMPTableWidget::setColumnHidden(int key, bool value)
|
||||
void QQtMPTableWidget::setColumnHidden ( int key, bool value )
|
||||
{
|
||||
m_columnHidden.insert(key, value);
|
||||
m_columnHidden.insert ( key, value );
|
||||
}
|
||||
|
||||
void QQTMPTableWidget::setSelectionMode(QAbstractItemView::SelectionMode mode)
|
||||
void QQtMPTableWidget::setSelectionMode ( QAbstractItemView::SelectionMode mode )
|
||||
{
|
||||
selectionMode = mode;
|
||||
}
|
||||
|
||||
void QQTMPTableWidget::setResizeMode(QHeaderView::ResizeMode mode)
|
||||
void QQtMPTableWidget::setResizeMode ( QHeaderView::ResizeMode mode )
|
||||
{
|
||||
resizeMode = mode;
|
||||
}
|
||||
|
||||
void QQTMPTableWidget::setResizeMode(int column, QHeaderView::ResizeMode mode)
|
||||
void QQtMPTableWidget::setResizeMode ( int column, QHeaderView::ResizeMode mode )
|
||||
{
|
||||
m_resizeMode.insert(column, mode);
|
||||
m_resizeMode.insert ( column, mode );
|
||||
}
|
||||
|
||||
void QQTMPTableWidget::setAlternatingRowColors(bool alt)
|
||||
void QQtMPTableWidget::setAlternatingRowColors ( bool alt )
|
||||
{
|
||||
altColor = alt;
|
||||
}
|
||||
|
||||
void QQTMPTableWidget::setHeaderData(int i, Qt::Orientation, QString data)
|
||||
void QQtMPTableWidget::setHeaderData ( int i, Qt::Orientation, QString data )
|
||||
{
|
||||
m_headerData.insert(i, data);
|
||||
m_headerData.insert ( i, data );
|
||||
}
|
||||
|
||||
void QQTMPTableWidget::setColumnWidth(int column, int width)
|
||||
void QQtMPTableWidget::setColumnWidth ( int column, int width )
|
||||
{
|
||||
m_columnWidth.insert(column, width);
|
||||
m_columnWidth.insert ( column, width );
|
||||
}
|
||||
|
||||
void QQTMPTableWidget::on_btnLeft_clicked()
|
||||
void QQtMPTableWidget::on_btnLeft_clicked()
|
||||
{
|
||||
int index = ui->stWidgetPage->currentIndex();
|
||||
|
||||
if (index > 0)
|
||||
if ( index > 0 )
|
||||
index--;
|
||||
|
||||
ui->stWidgetPage->setCurrentIndex(index);
|
||||
ui->lbPos->setText(QString("%1/%2").arg(index + 1).arg(m_pageNum));
|
||||
ui->stWidgetPage->setCurrentIndex ( index );
|
||||
ui->lbPos->setText ( QString ( "%1/%2" ).arg ( index + 1 ).arg ( m_pageNum ) );
|
||||
}
|
||||
|
||||
void QQTMPTableWidget::on_btnRight_clicked()
|
||||
void QQtMPTableWidget::on_btnRight_clicked()
|
||||
{
|
||||
int index = ui->stWidgetPage->currentIndex();
|
||||
|
||||
if (index < m_pageNum - 1)
|
||||
if ( index < m_pageNum - 1 )
|
||||
index++;
|
||||
|
||||
ui->stWidgetPage->setCurrentIndex(index);
|
||||
ui->lbPos->setText(QString("%1/%2").arg(index + 1).arg(m_pageNum));
|
||||
ui->stWidgetPage->setCurrentIndex ( index );
|
||||
ui->lbPos->setText ( QString ( "%1/%2" ).arg ( index + 1 ).arg ( m_pageNum ) );
|
||||
}
|
||||
|
||||
void QQTMPTableWidget::on_btnJump_clicked()
|
||||
void QQtMPTableWidget::on_btnJump_clicked()
|
||||
{
|
||||
int num = ui->leNum->text().toInt();
|
||||
|
||||
if (num <= m_pageNum && num > 0)
|
||||
if ( num <= m_pageNum && num > 0 )
|
||||
{
|
||||
ui->stWidgetPage->setCurrentIndex(num - 1);
|
||||
ui->lbPos->setText(QString("%1/%2").arg(num).arg(m_pageNum));
|
||||
ui->stWidgetPage->setCurrentIndex ( num - 1 );
|
||||
ui->lbPos->setText ( QString ( "%1/%2" ).arg ( num ).arg ( m_pageNum ) );
|
||||
}
|
||||
}
|
||||
|
||||
void QQTMPTableWidget::on_btnLeftHead_clicked()
|
||||
void QQtMPTableWidget::on_btnLeftHead_clicked()
|
||||
{
|
||||
ui->stWidgetPage->setCurrentIndex(0);
|
||||
ui->lbPos->setText(QString("%1/%2").arg(1).arg(m_pageNum));
|
||||
ui->stWidgetPage->setCurrentIndex ( 0 );
|
||||
ui->lbPos->setText ( QString ( "%1/%2" ).arg ( 1 ).arg ( m_pageNum ) );
|
||||
}
|
||||
|
||||
void QQTMPTableWidget::on_btnRightHead_clicked()
|
||||
void QQtMPTableWidget::on_btnRightHead_clicked()
|
||||
{
|
||||
int index = m_pageNum - 1;
|
||||
ui->stWidgetPage->setCurrentIndex(index);
|
||||
ui->lbPos->setText(QString("%1/%2").arg(index + 1).arg(m_pageNum));
|
||||
ui->stWidgetPage->setCurrentIndex ( index );
|
||||
ui->lbPos->setText ( QString ( "%1/%2" ).arg ( index + 1 ).arg ( m_pageNum ) );
|
||||
}
|
||||
|
||||
void QQTMPTableWidget::selectedRows(int column, QVector<QStringList>& strl)
|
||||
void QQtMPTableWidget::selectedRows ( int column, QVector<QStringList>& strl )
|
||||
{
|
||||
for (int i = 0; i < m_pageNum; i++)
|
||||
for ( int i = 0; i < m_pageNum; i++ )
|
||||
{
|
||||
QQtTableWidget* page = (QQtTableWidget*)ui->stWidgetPage->widget(i);
|
||||
QQtTableWidget* page = ( QQtTableWidget* ) ui->stWidgetPage->widget ( i );
|
||||
QMap<int, QStringList> ids;
|
||||
page->selectedRows(column, ids);
|
||||
QMapIterator<int, QStringList> itor(ids);
|
||||
page->selectedRows ( column, ids );
|
||||
QMapIterator<int, QStringList> itor ( ids );
|
||||
|
||||
while (itor.hasNext())
|
||||
while ( itor.hasNext() )
|
||||
{
|
||||
itor.next();
|
||||
strl.append(itor.value());
|
||||
strl.append ( itor.value() );
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
QQtTableWidget* QQTMPTableWidget::selectedRows(int column)
|
||||
QQtTableWidget* QQtMPTableWidget::selectedRows ( int column )
|
||||
{
|
||||
QString sectionName;
|
||||
QSqlQuery query(m_db);
|
||||
query.exec(QString("select * from %1 limit 0").arg(m_table));
|
||||
sectionName = query.record().fieldName(column);
|
||||
QSqlQuery query ( m_db );
|
||||
query.exec ( QString ( "select * from %1 limit 0" ).arg ( m_table ) );
|
||||
sectionName = query.record().fieldName ( column );
|
||||
query.finish();
|
||||
pline() << sectionName;
|
||||
|
||||
QVector<QStringList> lid;
|
||||
selectedRows(column, lid);
|
||||
selectedRows ( column, lid );
|
||||
|
||||
static QQtTableWidget* page = new QQtTableWidget(this);
|
||||
page->setDB(m_name);
|
||||
page->setTable(m_table);
|
||||
static QQtTableWidget* page = new QQtTableWidget ( this );
|
||||
page->setDB ( m_name );
|
||||
page->setTable ( m_table );
|
||||
|
||||
QString excp;
|
||||
|
||||
for (int i = 0; i < lid.count() - 1; i++)
|
||||
excp += QString("%1 = '%2' or ").arg(sectionName).arg(lid[i].at(column));
|
||||
for ( int i = 0; i < lid.count() - 1; i++ )
|
||||
excp += QString ( "%1 = '%2' or " ).arg ( sectionName ).arg ( lid[i].at ( column ) );
|
||||
|
||||
excp += QString("%1 = '%2'").arg(sectionName).arg(lid.last().at(column));
|
||||
page->query(excp);
|
||||
excp += QString ( "%1 = '%2'" ).arg ( sectionName ).arg ( lid.last().at ( column ) );
|
||||
page->query ( excp );
|
||||
|
||||
QAbstractItemModel* m_model = page->model();
|
||||
|
||||
for (int i = 0; i < m_model->columnCount(); i++)
|
||||
m_model->setHeaderData(
|
||||
for ( int i = 0; i < m_model->columnCount(); i++ )
|
||||
m_model->setHeaderData (
|
||||
i, Qt::Horizontal,
|
||||
m_headerData.value(i, m_model->headerData(i, Qt::Horizontal).toString()));
|
||||
m_headerData.value ( i, m_model->headerData ( i, Qt::Horizontal ).toString() ) );
|
||||
|
||||
page->setSelectionMode(selectionMode);
|
||||
page->setAlternatingRowColors(altColor);
|
||||
page->setSelectionMode ( selectionMode );
|
||||
page->setAlternatingRowColors ( altColor );
|
||||
#if QT_VERSION < QT_VERSION_CHECK(5,0,0)
|
||||
page->horizontalHeader()->setResizeMode(resizeMode);
|
||||
page->horizontalHeader()->setResizeMode ( resizeMode );
|
||||
#else
|
||||
page->horizontalHeader()->setSectionResizeMode(resizeMode);
|
||||
page->horizontalHeader()->setSectionResizeMode ( resizeMode );
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < m_model->columnCount(); i++)
|
||||
for ( int i = 0; i < m_model->columnCount(); i++ )
|
||||
{
|
||||
page->setColumnHidden(i, m_columnHidden.value(i));
|
||||
page->setColumnHidden ( i, m_columnHidden.value ( i ) );
|
||||
#if QT_VERSION < QT_VERSION_CHECK(5,0,0)
|
||||
page->horizontalHeader()->setResizeMode(i, m_resizeMode.value(i, resizeMode));
|
||||
page->horizontalHeader()->setResizeMode ( i, m_resizeMode.value ( i, resizeMode ) );
|
||||
#else
|
||||
page->horizontalHeader()->setSectionResizeMode(i, m_resizeMode.value(i, resizeMode));
|
||||
page->horizontalHeader()->setSectionResizeMode ( i, m_resizeMode.value ( i, resizeMode ) );
|
||||
#endif
|
||||
page->setColumnWidth(i, m_columnWidth.value(i));
|
||||
page->setColumnWidth ( i, m_columnWidth.value ( i ) );
|
||||
}
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
|
||||
void QQTMPTableWidget::removeSelectedRows(int column)
|
||||
void QQtMPTableWidget::removeSelectedRows ( int column )
|
||||
{
|
||||
for (int i = 0; i < m_pageNum; i++)
|
||||
for ( int i = 0; i < m_pageNum; i++ )
|
||||
{
|
||||
QQtTableWidget* page = (QQtTableWidget*)ui->stWidgetPage->widget(i);
|
||||
QQtTableWidget* page = ( QQtTableWidget* ) ui->stWidgetPage->widget ( i );
|
||||
QMap<int, QStringList> ids;
|
||||
page->selectedRows(column, ids);
|
||||
page->removeRows(column, ids.values());
|
||||
page->selectedRows ( column, ids );
|
||||
page->removeRows ( column, ids.values() );
|
||||
}
|
||||
}
|
||||
|
@ -9,43 +9,43 @@
|
||||
#include "qqt-local.h"
|
||||
|
||||
namespace Ui {
|
||||
class QQTMPTableWidget;
|
||||
class QQtMPTableWidget;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief The QQTMPTableWidget class
|
||||
* @brief The QQtMPTableWidget class
|
||||
* 关于视图规格的改变改变到上层
|
||||
* 这里的控件使用默认视图
|
||||
* 这里的控件只是Table-DB关系,没有Tree/List模型
|
||||
*/
|
||||
class QQTSHARED_EXPORT QQTMPTableWidget : public QWidget
|
||||
class QQTSHARED_EXPORT QQtMPTableWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit QQTMPTableWidget(QWidget* parent = 0);
|
||||
~QQTMPTableWidget();
|
||||
explicit QQtMPTableWidget ( QWidget* parent = 0 );
|
||||
~QQtMPTableWidget();
|
||||
|
||||
void setDB(QString db);
|
||||
void setTable(QString table);
|
||||
void setRelation(int column, const QSqlRelation& relation);
|
||||
void setRecordNumPerPage(int num);
|
||||
void setColumnHidden(int key, bool value = true);
|
||||
void setSelectionMode(QAbstractItemView::SelectionMode mode = QAbstractItemView::MultiSelection);
|
||||
void setResizeMode(QHeaderView::ResizeMode mode = QHeaderView::ResizeToContents);
|
||||
void setResizeMode(int column, QHeaderView::ResizeMode mode = QHeaderView::ResizeToContents);
|
||||
void setAlternatingRowColors(bool alt = true);
|
||||
void setHeaderData(int i, Qt::Orientation, QString data);
|
||||
void setColumnWidth(int column, int width);
|
||||
void query(QString filter = "1=1");
|
||||
void selectedRows(int column, QVector<QStringList>& strl);
|
||||
QQtTableWidget* selectedRows(int column = 0);
|
||||
void setDB ( QString db );
|
||||
void setTable ( QString table );
|
||||
void setRelation ( int column, const QSqlRelation& relation );
|
||||
void setRecordNumPerPage ( int num );
|
||||
void setColumnHidden ( int key, bool value = true );
|
||||
void setSelectionMode ( QAbstractItemView::SelectionMode mode = QAbstractItemView::MultiSelection );
|
||||
void setResizeMode ( QHeaderView::ResizeMode mode = QHeaderView::ResizeToContents );
|
||||
void setResizeMode ( int column, QHeaderView::ResizeMode mode = QHeaderView::ResizeToContents );
|
||||
void setAlternatingRowColors ( bool alt = true );
|
||||
void setHeaderData ( int i, Qt::Orientation, QString data );
|
||||
void setColumnWidth ( int column, int width );
|
||||
void query ( QString filter = "1=1" );
|
||||
void selectedRows ( int column, QVector<QStringList>& strl );
|
||||
QQtTableWidget* selectedRows ( int column = 0 );
|
||||
int pageNum();
|
||||
int currentPage();
|
||||
void setCurrentPage(int page);
|
||||
void setCurrentPage ( int page );
|
||||
|
||||
public slots:
|
||||
void removeSelectedRows(int column = 0);
|
||||
void removeSelectedRows ( int column = 0 );
|
||||
|
||||
private slots:
|
||||
void on_btnLeft_clicked();
|
||||
@ -59,7 +59,7 @@ private slots:
|
||||
void on_btnRightHead_clicked();
|
||||
|
||||
private:
|
||||
Ui::QQTMPTableWidget* ui;
|
||||
Ui::QQtMPTableWidget* ui;
|
||||
QSqlDatabase m_db;
|
||||
QString m_name;
|
||||
QString m_table;
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>QQTMPTableWidget</class>
|
||||
<widget class="QWidget" name="QQTMPTableWidget">
|
||||
<class>QQtMPTableWidget</class>
|
||||
<widget class="QWidget" name="QQtMPTableWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
|
Loading…
x
Reference in New Issue
Block a user