我正在尝试在QT创建的应用程序中进行系统测试。我遇到了以下问题。 我的应用程序中的打开菜单操作会触发QFileDialog。我有相同的句柄(指针)。但我不知道如何选择所需的文件并触发打开操作。
我尝试过的事情:
fileDial->setDirectory("xxxx");
fileDial->selectFile(xxx");
fileDial->fileSelected("xxxx");
fileDial->selectNameFilter("xxx");
并注意到我没有为
采取任何行动fileDial->findChildren<QAction*>().
答案 0 :(得分:2)
QFileDialog
只是系统对话框的包装器。这就是为什么在那里搜索任何QActions
无用的原因。相反,如果您在Windows中运行程序,则可以使用WIN API来处理对话框。
这是一个简单的示例,其中一些文本放在文件名控件中,单击打开按钮:
#define WAIT(A) while (!(A)) {}
HWND dialogHandle, button, edit, combo, comboEx;
WAIT(dialogHandle = FindWindow(NULL, L"Open"));
WAIT(button = FindWindowEx(dialogHandle, NULL, L"Button", L"&Open"));
WAIT(comboEx = FindWindowEx(dialogHandle, comboEx, L"ComboBoxEx32", NULL));
WAIT(combo = FindWindowEx(comboEx, combo, L"ComboBox", NULL));
WAIT(edit = FindWindowEx(combo, NULL, L"Edit", NULL));
char text[] = "arc.h";
SendMessageA(edit, WM_SETTEXT, 0, (LPARAM) text);
SendMessage(button, BM_CLICK, 0, 0);