我正在开发一个小程序。我将 Qt 用于 GUI。我有 2 个表格/课程。MainWindow
和AddProductDialog
。
我在他们两个中都需要一个变量(std::string
准确地说是一个)。我需要在AddProductDialog
(例如std::string decl = ""
;)的事件中定义它,并且我需要在我的 MainWindow 的函数中使用它的值。
我想我可以把这个变量放在一个头文件中,每个头文件都会包含,但显然它不起作用。
现在它可以工作了,但我认为这不是一个好的风格。我在 main.cpp 中声明并定义了它。
主.cpp:
//includes ...
...
std::string descr; //The variable I need
int main(){ /* blah blah */ }
主窗口.cpp:
void MainWindow::on_AddProductOptions_clicked()
{
extern std::string descr;
AddProductDialog *adp = new AddProductDialog(this);
adp->setModal(true);
if(adp->exec() == QDialog::Accepted)
_Description = descr; //_Description is a private variable of my MainWindow Class
}
添加产品.cpp
void AddProductDialog::on_cmdOkay_clicked()
{
extern std::string descr;
descr = "";
done(QDialog::Accepted);
}
这当然有效。但是有没有办法在头文件中声明这个变量并包含它以便我可以使用它?
起初我尝试过这样的事情,但它总是导致错误:
标题
//include guard
extern std::string descr;
//include guard
主窗口
//include header
//...
std::string descr = "";
//...
添加产品对话框
//include header
//...
extern std::string descr;
descr = "whatever";