C++ 如何从Qt测试单元测试类访问和测试Qt窗口的私有小部件?
我正在尝试单元测试(使用Qt测试)Qt窗口小部件应用程序中的单个窗口小部件,如菜单栏、按钮等。该项目已设置为一个子项目,其中Qt应用程序和GUI测试子项目都有自己的目录和.pro文件。问题是我无法从测试类(MainWindowTest)访问驻留在MainWindow中的任何小部件,正如编译器所说:C++ 如何从Qt测试单元测试类访问和测试Qt窗口的私有小部件?,c++,qt,unit-testing,user-interface,qttest,C++,Qt,Unit Testing,User Interface,Qttest,我正在尝试单元测试(使用Qt测试)Qt窗口小部件应用程序中的单个窗口小部件,如菜单栏、按钮等。该项目已设置为一个子项目,其中Qt应用程序和GUI测试子项目都有自己的目录和.pro文件。问题是我无法从测试类(MainWindowTest)访问驻留在MainWindow中的任何小部件,正如编译器所说: 错误:无法将“MainWindow”强制转换为其私有基类“Ui\u MainWindow” “按钮”是“Ui_主窗口”的私有成员 这里受私有继承的约束 我试图将MainWindowTest声明为M
- 错误:无法将“MainWindow”强制转换为其私有基类“Ui\u MainWindow”
- “按钮”是“Ui_主窗口”的私有成员
- 这里受私有继承的约束
我已经在网上浏览了一些“解决方案”,但它们似乎都不是干净的解决方案。我现在希望能够执行QVERIFY2(win.putton,“putton未创建”)之类的操作,但正如我所说的,putton无法访问。谢谢,但正如我所写的,我确实使用了friend。出于某种原因,它不起作用。没有它,我无法猜测。好吧,似乎一些预处理器指令胜过了我。通过从“friend class MainWindowTest;”中删除#ifdef我现在可以访问私人成员。现在只有ui_mainwindow.h代仍然是一个问题。谢谢,但正如我所写的,我确实使用了friend来完成这个任务。出于某种原因,它不起作用。没有它,我无法猜测。好吧,似乎一些预处理器指令胜过了我。通过从“friend class MainWindowTest;”中删除#ifdef我现在可以访问私人成员。现在只有ui_mainwindow.h生成仍然是一个问题。