在函数 Qt C++ 中使用 UI 数组
Posted
技术标签:
【中文标题】在函数 Qt C++ 中使用 UI 数组【英文标题】:Use UI array in a function Qt C++ 【发布时间】:2012-11-12 19:39:07 【问题描述】:在我的 Windows 窗体代码中,默认使用 ui 来定义图形元素。但我想在一个函数中修改它们,如下所示:
问题是调试工具告诉我ui没有在这个范围内声明。
#include <QMessageBox>
#include <QFile>
#include <QTextStream>
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "datawindow.h"
void getData(ui)
QFile inputFile("C:\\pepoles.txt");
if (inputFile.open(QIODevice::ReadOnly))
QTextStream in(&inputFile);
while ( !in.atEnd() )
QString line = in.readLine();
ui->listWidgetData->addItem(line);
else
QMessageBox::critical(this, "Erreur", "Une erreur s'est produite :(");
inputFile.close();
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
ui->setupUi(this);
getData(ui);
MainWindow::~MainWindow()
delete ui;
void MainWindow::on_actionNouvellesDonnees_triggered()
w.show();
【问题讨论】:
【参考方案1】:
void getData(ui)
该行开始定义getData
函数,它接受一个变量,type ui
并且没有名称(因此无法在函数代码中访问它)。
添加类型...
void getData(MainWindow::Ui *ui)
【讨论】:
【参考方案2】:使getData()
成为MainWindow 的成员:
void MainWindow::getData()
QFile inputFile("C:\\pepoles.txt");
if (inputFile.open(QIODevice::ReadOnly))
QTextStream in(&inputFile);
while ( !in.atEnd() )
QString line = in.readLine();
ui->listWidgetData->addItem(line);
else
QMessageBox::critical(this, "Erreur", "Une erreur s'est produite :(");
inputFile.close();
然后,在你的构造函数中:
ui->setupUi(this);
getData();
我推荐这种方法,因为ui
包含私有成员,所以最好有一个成员函数来修改它。
不要忘记在 MainWindow 类的头文件中声明 getData()
。您可能应该将其设为私有。
顺便说一句,ui
不是数组。这是一个对象指针。
【讨论】:
以上是关于在函数 Qt C++ 中使用 UI 数组的主要内容,如果未能解决你的问题,请参考以下文章
大侠急救:qt creator中怎么定义数组,然后用qlabel将数组内容显示出来,比如一个工程的ui中有10个label,