Our header file is below.
[codesyntax lang=”cpp-qt”]
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QTreeWidgetItem> #include <QMainWindow> #include <QtSql> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void on_pushButton_clicked(); void on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column); private: Ui::MainWindow *ui; void addRoot(QString cats, QString id1); void addChild(QTreeWidgetItem * parent, QString sdes); }; #endif // MAINWINDOW_H
[/codesyntax]
The main source code follows.
[codesyntax lang=”cpp-qt”]
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QtSql> #include <QSqlDatabase> #include <QTreeWidgetItem> #include <QProcess> //#include <QStringRef> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); ui->treeWidget->setColumnCount(1); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_clicked() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setUserName("bcs"); db.setPassword("Peace007!amb"); db.setDatabaseName("bcswebtools"); if (db.open()) { QSqlQuery * mas = new QSqlQuery; mas->prepare("select * from lk1 order by cat"); mas->exec(); while(mas->next ()) { addRoot(mas->value("cat").toString(), mas->value("idlk1").toString()); } } } void MainWindow::addRoot(QString cats, QString id1) { QTreeWidgetItem * itm = new QTreeWidgetItem(ui->treeWidget); itm->setText(0, cats); ui->treeWidget->addTopLevelItem(itm); QSqlQuery * det = new QSqlQuery; det->prepare("select * from lk2 where idlk1 = " + id1 + " order by lkn"); det->exec(); while (det->next()) { addChild(itm, det->value("lkn").toString() + " @@^ " + det->value("lnk").toString()); } } void MainWindow::addChild(QTreeWidgetItem * parent, QString sdes) { QTreeWidgetItem * itm = new QTreeWidgetItem(); itm->setText(0, sdes); parent->addChild(itm); } void MainWindow::on_treeWidget_itemDoubleClicked(QTreeWidgetItem *item, int column) { QString cmd = item->text(column); // QVariant val = item->data(); // QString obuf = QString::subString(cmd, ista + 3, cmd.length()); // cmd.chop(ista); QList<QString> list; if (cmd.contains("http", Qt::CaseInsensitive)) { int ista = cmd.indexOf("@@^", 0); QString obuf = cmd.right(cmd.length() - (ista + 4)); list.append(obuf); // QString cmdl = "/usr/bin/konqueror " + obuf; QString cmdl = "/usr/bin/konqueror"; QProcess::execute(cmdl, list); list.clear(); } int ista = cmd.indexOf("/", 0); if (ista == 0) { // cmd = ""; list.append(cmd); QProcess::execute(cmd, list); list.clear(); } cmd = cmd; }
[/codesyntax]
Mr. Arch Brooks, Software Engineer, Brooks Computing Systems, LLC authored this article.