冥界3大法王 发表于 2023-5-4 23:00

如下QT程序怎么没有效果?

本帖最后由 冥界3大法王 于 2023-5-4 23:01 编辑

如下QT程序怎么没有效果?没有加载到列表中呢?{:301_973:}{:301_974:}

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSettings>
#include <QString>
#include <QDebug>
#include <QDir>
#pragma execution_character_set("utf-8");
#include <QRegularExpression>
#include <QFile>







void MainWindow::on_LoadtxtToList_clicked()
{
    ui->listWidget->clear();




    QFile dataFile("c:\1.txt");
    if (dataFile.open(QFile::ReadOnly|QIODevice::Text))
    {
    QTextStream data(&dataFile);
    QStringList fonts;
    QString line;
    while (!data.atEnd())                     //逐行读取文本,并去除每行的回车
    line = data.readLine();
    line.remove('\n');
    ui->listWidget->addItems(fonts);            //把各行添加到listwidget
}
}


hrh123 发表于 2023-5-4 23:12

你没有把line添加到fonts列表中,所以ui->listWidget->addItems(fonts)没有效果.你应该在while循环中使用fonts.append(line)或者fonts << line来把每一行的文本加入到列表中

冥界3大法王 发表于 2023-5-4 23:34

hrh123 发表于 2023-5-4 23:12
你没有把line添加到fonts列表中,所以ui->listWidget->addItems(fonts)没有效果.你应该在while循环中使用fon ...

网上粘来的,QT饭桶表示看不懂,天朝不少都是英文盲流弄得代码不少粘错,就是前后少东西。确实太菜了。。。。

冥界3大法王 发表于 2023-5-4 23:39

@hrh123
不会改,受累修改个完整不报错的代码吧,谢谢。

Eaglecad 发表于 2023-5-5 07:21

上面都有一个大前提就怕while的花括号必须带上,要不然仅仅生效其后一句。
其次是fonts应该需要把line内容追加进去。

if (dataFile.open(QFile::ReadOnly|QIODevice::Text))
    {
    QTextStream data(&dataFile);
    QStringList fonts;
    QString line;
    while (!data.atEnd()) {                      //逐行读取文本,并去除每行的回车
    line = data.readLine();
    line.remove('\n');
    fonts.append(line);
}
    ui->listWidget->addItems(fonts);            //把各行添加到listwidget
}

fengdaokanhai 发表于 2023-5-5 07:37

Eaglecad 发表于 2023-5-5 07:21
上面都有一个大前提就怕while的花括号必须带上,要不然仅仅生效其后一句。
其次是fonts应该需要把line内容 ...

赞一个!!

236A 发表于 2023-5-5 07:43

本帖最后由 236A 于 2023-5-5 07:51 编辑

少了个花括号 编译器不报错的吗
QString &QString::remove(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive)要去空格因该拿他的返回值line.remove('\n') 不会改变line的值

冥界3大法王 发表于 2023-5-5 07:59

Eaglecad 发表于 2023-5-5 07:21
上面都有一个大前提就怕while的花括号必须带上,要不然仅仅生效其后一句。
其次是fonts应该需要把line内容 ...
不 行啊,哥们,还是没有动静呢,没有报错同时。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSettings>
#include <QString>
#include <QDebug>
#include <QDir>
#pragma execution_character_set("utf-8");
#include <QRegularExpression>
#include <QFile>
#include <QTextStream>




MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()   //读取INI,设置到Edit1 2 3 控件上!
{
    QSettings *configIniRead = new QSettings("config.ini", QSettings::IniFormat);
    //将读取到的ini文件保存在QString中,先取值,然后通过toString()函数转换成QString类型
    QString jianzhi = configIniRead->value("/ip/first").toString();
    ui->Edit3->setText(jianzhi);

    //    QString portResult = configIniRead->value("/port/open").toString();
    //    ui->Edit2->setText(portResult);




    //qDebug() << ipResult;//打印得到的结果
    //qDebug() << portResult;
    //读入入完成后删除指针
    delete configIniRead;

    //获取应用程序可执行文件所在的目录
    qDebug()<<"current applicationDirPath: "<<QCoreApplication::applicationDirPath();


    QString strPath = QCoreApplication::applicationDirPath();
    QDir dir(strPath);
    bool bSuccess = dir.cdUp();
    if (bSuccess == true) {
      strPath = dir.path() + "/";
    }
    qDebug()<<"上一级目录是:"<<strPath;
}





void MainWindow::on_InsertNewItem_clicked()//插入新项到列表中OK了!
{
    QListWidgetItem * aItem= new QListWidgetItem("CC");
    ui->listWidget->insertItem(ui->listWidget->currentRow(),aItem);
}




void MainWindow::on_LoadtxtToList_clicked()
{
    ui->listWidget->clear();


    QFile dataFile("c:\1.txt");
    if (dataFile.open(QFile::ReadOnly|QIODevice::Text))
      {
      QTextStream data(&dataFile);
      QStringList fonts;
      QString line;
      while (!data.atEnd()) {                      //逐行读取文本,并去除每行的回车
      line = data.readLine();
      line.remove('\n');
      fonts.append(line);
      }
      ui->listWidget->addItems(fonts);            //把各行添加到listwidget
      }



      //    QFile file("c:\1.txt");
      //      if (file.open(QIODevice::ReadOnly | QIODevice::Text))
      //      {
      //            while (!file.atEnd())
      //            {
      //                QByteArray line = file.readLine();
      //                QString str(line);

      //               QRegularExpression re("(?<=^\\[).*(?=\\])");
      //                QRegularExpression re("(?<=NoteName=).*");
      //            QRegularExpressionMatch match = re.match(str);
      //                  if (match.hasMatch())
      //                  {
      //                      QString matched = match.captured(0);
      //                      ui->comboBox->addItem(matched);
      //                  }

      //      QListWidgetItem * aItem= new QListWidgetItem(str);
      //       ui->listWidget->insertItem(ui->listWidget->currentRow(),aItem);
    }
    //            file.close();




forever96 发表于 2023-5-5 09:19

大佬咋不搞delphi了,这玩意还能深入不

淡淡灰黑色J 发表于 2023-5-5 09:28

void MainWindow::on_btn_load_clicked()
{
    ui->listWidget->clear();

    QFile file("D:\\1.txt");//文件位置自己改
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
      return;

    while (!file.atEnd()) {
      QString line = file.readLine();             //逐行读取文本,并去除每行的回车
      line.remove('\n');
      ui->listWidget->addItem(line);            //把各行添加到listwidget
    }
}
页: [1] 2
查看完整版本: 如下QT程序怎么没有效果?