我已经声明了一个成员数组来存储一堆Qt Control小部件的指针(QLineEdit),
在主代码中,我以编程方式创建这些小部件并进行分配,但只有在函数处于范围内时才能访问它们:
// MyGui.h
class myGui : public QMainWindow, private Ui::uiFormWin
{
Q_OBJECT
public:
MyGui(QMainWindow *parent = 0);
Test();
private:
QTimer *pUiTimer;
QLineEdit* le2T[ 32 ];
public slots:
void GuiUpdate(void);
}
// MyGui.c
MyGui::MyGui(QMainWindow *parent) : QMainWindow(parent)
{
// Create Objects and Assign
for ( int i = 0 ; i < 32; i++ ){
le2T[ i ] = new QLineEdit (this);
}
// This Displays fine:
le2T [ 0 ]->setText ("Hello");
// Setup Timer To Update Line Edit Later
pUiTimer = new QTimer(this);
pUiTimer->setInterval(100);
connect(pUiTimer, SIGNAL(timeout()), this, SLOT(GuiUpdate()) );
}
void MyGui::GuiUpdate( void )
{
// This next line causes Run-Time Crash -- le2T[0] object is null!
le2T [ 0 ]->setText ("World"); // Error
}
有趣的是,即使它们不再可访问,它们仍会出现在GUI上。
我已经尝试将这些QLineEdit对象作为我的类中的成员变量(而不是指针数组),但是,访问QLineEdit的成员函数失败..而且Qt甚至不会将这些自动检测为QLineEdit对象! / p>
.h
QLineEdit le2T[ 32 ];
.cpp
le2T[ 0 ].setText ("World"); // Error
如何在运行时创建一个小部件数组,并保存为成员变量,以便可以从类中的任何方法访问它们?