QT Tree View App

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.

Leave a Reply

Your email address will not be published. Required fields are marked *