Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从Qt测试单元测试类访问和测试Qt窗口的私有小部件?_C++_Qt_Unit Testing_User Interface_Qttest - Fatal编程技术网

C++ 如何从Qt测试单元测试类访问和测试Qt窗口的私有小部件?

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

我正在尝试单元测试(使用Qt测试)Qt窗口小部件应用程序中的单个窗口小部件,如菜单栏、按钮等。该项目已设置为一个子项目,其中Qt应用程序和GUI测试子项目都有自己的目录和.pro文件。问题是我无法从测试类(MainWindowTest)访问驻留在MainWindow中的任何小部件,正如编译器所说:

  • 错误:无法将“MainWindow”强制转换为其私有基类“Ui\u MainWindow”
  • “按钮”是“Ui_主窗口”的私有成员
  • 这里受私有继承的约束
我试图将MainWindowTest声明为MainWindow中的朋友,但没有帮助。 我还尝试在一个单独的头文件中转发declare MainWindowTest,然后将其包含在mainwindow.h(仍然将MainWindowTest声明为friend)中,但这也没有帮助

只需在Creator中创建一个默认的subdir小部件应用程序和一个GuiTest AutoTest subdir项目,就可以生成所有必要的代码

我在这里真正想要实现的是在MainWindowTest的私有区域中创建一个MainWindow实例,然后编写两个单元测试来检查小部件的存在,然后进行一些基于键盘和鼠标事件的测试。但是,因为我甚至无法访问这些小部件,所以很难做到这一点


我已经在网上浏览了一些“解决方案”,但它们似乎都不是干净的解决方案。我现在希望能够执行QVERIFY2(win.putton,“putton未创建”)之类的操作,但正如我所说的,putton无法访问。

谢谢,但正如我所写的,我确实使用了friend。出于某种原因,它不起作用。没有它,我无法猜测。好吧,似乎一些预处理器指令胜过了我。通过从“friend class MainWindowTest;”中删除#ifdef我现在可以访问私人成员。现在只有ui_mainwindow.h代仍然是一个问题。谢谢,但正如我所写的,我确实使用了friend来完成这个任务。出于某种原因,它不起作用。没有它,我无法猜测。好吧,似乎一些预处理器指令胜过了我。通过从“friend class MainWindowTest;”中删除#ifdef我现在可以访问私人成员。现在只有ui_mainwindow.h生成仍然是一个问题。