如何在另一个函数中使用这些变量
How to use these variable in another function?
尝试在同一文件中的另一个函数中使用变量,我快把自己逼疯了:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
QLineEdit * street1BetSize = new QLineEdit("0"); // want to use these QLineEdit's
QLineEdit * street2BetSize = new QLineEdit("0");
QLineEdit * street3BetSize = new QLineEdit("0");
QLineEdit * street4BetSize = new QLineEdit("0");
QLineEdit * street5BetSize = new QLineEdit("0");
}
想在这里使用这些变量:
void MainWindow::runButtonClicked()
{
QVector<card> vDealt = cardDeck.deal_rand_cards(vDeck,3);
//qDebug()<<vStreetBets[0];
streetBetsList << street1BetSize << street2BetSize << street3BetSize << street4BetSize << street5BetSize;
QVector<int> vStreetBets;
for(int i=0;i<5;i++)
{
vStreetBets.append(streetBetsList[i]->text().toInt());
qDebug()<<"street bet: "<<vStreetBets[i];
}
}
因为它在这里,我得到
警告:C4189:'street5BetSize':局部变量初始化但未被引用
和
error: C2065: 'street5BetSize' : undeclared identifier
我尝试将extern QLineEdit * street1BetSize;
添加到mainwindow.h,但这给了我一个"未解决的外部"错误。
street1BetSize to street5BetSize
中的变量是MainWindow构造函数中的局部变量,它们对其他函数不可见。为了使其他类成员函数能够访问它们,您可以将它们提升为MainWindow类成员,以便在类之间共享变量状态。而不是许多变量指针,使用std::vector
的QLineEdit对象应该是一个更好的解决方案?
class MainWindow
{
public:
MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
streetBetSizes(5,QLineEdit("0"))
private:
// other member
std::vector<QLineEdit> streetBetSizes;
};
如果每个MainWindow
对应5个QLineEdit
,那么您希望它们成为您的类的成员。只需将它们添加到您的类定义中:
class MainWindow
{
// ...
private:
// ...
QLineEdit* street1BetSize;
QLineEdit* street2BetSize;
QLineEdit* street3BetSize;
QLineEdit* street4BetSize;
QLineEdit* street5BetSize;
}
现在,每个MainWindow
对象将有5个指向QLineEdit
的指针。它们构成了该对象状态的一部分,并且可以被它的任何成员函数访问。现在将构造函数更改为以下内容,这样就不用重新定义名称了:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
street1BetSize = new QLineEdit("0");
street2BetSize = new QLineEdit("0");
street3BetSize = new QLineEdit("0");
street4BetSize = new QLineEdit("0");
street5BetSize = new QLineEdit("0");
}
实际上,您最好使用成员初始化列表,就像您对QMainWindow
和ui
所做的那样:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent), ui(new Ui::MainWindow),
street1BetSize(new QLineEdit("0")), street2BetSize(new QLineEdit("0")),
street3BetSize(new QLineEdit("0")), street4BetSize(new QLineEdit("0")),
street5BetSize(new QLineEdit("0"))
{ }
现在你的构造函数不需要做任何工作。
现在可以在MainWindow
的其他成员函数中引用street1BetSize
和友元。但是,当您有编号的变量(如streetXBetSize
)时,这总是非常可疑的。这似乎是一个数组或容器的好地方。为什么不尝试std::vector<QLineEdit>
,然后您可以根据需要添加和删除QLineEdit
s。你的类定义现在有:
class MainWindow
{
// ...
private:
// ...
std::vector<QLineEdit> streetBetSizes;
}
构造函数现在可以简单地做:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent), ui(new Ui::MainWindow)
{
for (int i = 0; i < 5; i++) {
streetBetSizes.push_back(new QLineEdit("0"));
}
}
将变量声明为MainWindow的成员,然后在构造函数中初始化它们:
class MainWindow : public QMainWindow
{
...
private:
QLineEdit* m_street1BetSize;
QLineEdit* m_street2BetSize;
QLineEdit* m_street3BetSize;
QLineEdit* m_street4BetSize;
QLineEdit* m_street5BetSize;
};
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
m_street1BetSize = new QLineEdit("0"); // want to use these QLineEdit's
m_street2BetSize = new QLineEdit("0");
m_street3BetSize = new QLineEdit("0");
m_street4BetSize = new QLineEdit("0");
m_street5BetSize = new QLineEdit("0");
}
相关文章:
- 如何从另一个文件继承私有成员变量和公共函数
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 一个变量的输入值也会保存到另一个变量中
- 从另一个 cpp 文件更改结构内、映射键内的变量
- 在另一个函数 (c++) 中调用变量
- 将双精度变量设置为另一个变量的值
- 为什么从另一个构造函数内部调用C++构造函数不修改类变量?
- 我有一个类,它创建了另一个类的实例.如何将变量通过第一个类传递到第二个类的实例化中?
- 为什么我可以使用 memcpy 将一个对象变量复制到另一个对象变量
- 为什么一个变量获得与另一个值相同的值
- 类中的一个变量显示,但另一个不显示
- c++问题:给一个变量赋值后,另一个变量发生了变化
- 在一个子程序中输入的变量用于C++中的另一个子程序
- (C++) 从另一个类访问变量时值无效
- 我如何将一个变量与另一个变量进行比较,例如我想如果(var1 > var2 x 1),然后执行此 c++
- 如何在一个函数中定义一个变量,并在另一个函数中访问和更改它?(C++)
- 如果一个变量在它之前释放了另一个(相同的数据类型)变量,如何将其分配给内存?
- 将变量从主窗口传递到另一个qt c++窗体
- memcpy() 在一个类中被调用以复制到另一个类变量中后会引发异常
- 将 int 转换为字符串,然后连接另一个变量以创建完整扩展名,然后将其转换为 const_char*