用C++ QT实现点击下拉框,选则后自动填写其他项

QT中下拉框

  • 一 . 读取选项内容
    • 1.1 从csv文件读取

一 . 读取选项内容

1.1 从csv文件读取

#include 
#include 
#include 
#include 
#include 
#include 

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    // 打开CSV文件
    QFile file("your_csv_file.csv");
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        qDebug() << "无法打开CSV文件";
        return 1;
    }

    // 创建一个QVector来存储CSV数据
    QVector<QStringList> csvData;

    // 读取并解析CSV文件
    QTextStream in(&file);
    while (!in.atEnd())
    {
        QString line = in.readLine();
        QStringList fields = line.split(",");

        // 将CSV行数据添加到QVector
        csvData.append(fields);
    }

    // 输出CSV数据
    for (const QStringList &row : csvData)
    {
        qDebug() << row.join(", ");
    }

    // 关闭文件
    file.close();

    return app.exec();
}

从excel中读取

#include 
#include 
#include 
#include 

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    // 创建一个Qt应用程序
    QWidget window;
    window.setWindowTitle("读取Excel文件");

    // 创建一个QTableWidget来显示Excel数据
    QTableWidget *tableWidget = new QTableWidget(&window);

    // 创建QAxObject以连接到Excel应用程序
    QAxObject excel("Excel.Application", &window);
    excel.setProperty("Visible", false); // 使Excel不可见

    // 打开Excel工作簿
    QAxObject *workbooks = excel.querySubObject("Workbooks");
    QAxObject *workbook = workbooks->querySubObject("Open(const QString&)", "your_excel_file.xlsx");

    if (workbook)
    {
        // 获取第一个工作表
        QAxObject *worksheets = workbook->querySubObject("Worksheets");
        QAxObject *worksheet = worksheets->querySubObject("Item(int)", 1);

        if (worksheet)
        {
            // 获取行数和列数
            int rowCount = worksheet->property("UsedRange").querySubObject("Rows")->property("Count").toInt();
            int columnCount = worksheet->property("UsedRange").querySubObject("Columns")->property("Count").toInt();

            // 设置表格的行数和列数
            tableWidget->setRowCount(rowCount);
            tableWidget->setColumnCount(columnCount);

            // 读取Excel数据并填写到表格中
            for (int row = 1; row <= rowCount; ++row)
            {
                for (int col = 1; col <= columnCount; ++col)
                {
                    QAxObject *cell = worksheet->querySubObject("Cells(int, int)", row, col);
                    QString cellData = cell->dynamicCall("Value()").toString();
                    QTableWidgetItem *item = new QTableWidgetItem(cellData);
                    tableWidget->setItem(row - 1, col - 1, item);
                }
            }

            // 释放工作表对象
            worksheet->dynamicCall("Release()");
        }

        // 释放工作簿对象
        workbook->dynamicCall("Close()");
        workbook->dynamicCall("Release()");
    }

    // 退出Excel应用程序
    excel.dynamicCall("Quit()");

    // 显示表格
    tableWidget->show();

    return app.exec();
}

auto cbox = new ComboBox();
    cbox->setEditable(true);
    m_pTableView->setIndexWidget(m_pModel->index(idx, 0), cbox);
    // 获取文件中的数据
    QFile file("D:/develop/Projects/QTPro/TMI/tmi/MaterialInfo.csv");
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
        qDebug() << "无法打开CSV文件" << endl;
        return;
    }

//     创建一个QVector来存储CSV数据
//        QVector csvData;

    // 读取并解析CSV文件
    QTextStream in(&file);
    cbox->clear();
    while (!in.atEnd()) {
        QString line = in.readLine();
        QStringList fields = line.split(",");
        cbox->addItem(fields[0]);
        // 将CSV行数据添加到QVector
        //        csvData.append(fields);
    }

你可能感兴趣的:(c++,qt,数据库)