QT调用剪切板错误
在创建新类或者GUI程序使用.ui方式之后,在MainWindows中使用QClipboard会报错,执行完clipboard->setText之后剪切板是空的
后面发现在main.cpp中是可以用的
现在问题又出现在怎么把MainWindows中的QString复制到剪切板中
首先在MainWindows中创建信号和槽函数,主要是信号,槽函数只是起到一个使用剪切板的作用
signals:
void QQ_Report_Error_Info(QString);
private slots:
void QQ_Report_EN_Fun_slots(QString info);
这里的槽函数是一个找QQ窗口的程序
HWND QQ_HWND;
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) {
char title[256];
// 获取窗口标题
if (GetWindowTextA(hwnd, title, sizeof(title)) > 0) {
// 输出窗口标题
QString Dis=QString::fromLocal8Bit(title);
qDebug() << "Window Handle:" << hwnd << ", Title:" << Dis;
if(Dis.indexOf("Android")!=-1)
{
QQ_HWND=hwnd;
qDebug() << "Window Handle:" << hwnd << ", Title:" << Dis;
return 0;
}
}
return TRUE; // 继续枚举
}
void MainWindow::QQ_Report_EN_Fun_slots(QString info)
{
if(EnumWindows(EnumWindowsProc, 0)) // 枚举所有窗口
{
qDebug()<<"没找到";
}else{
qDebug()<<"找到了";
qDebug() << "Window Handle:" << QQ_HWND;
ShowWindow(QQ_HWND, SW_MAXIMIZE);
SetWindowPos(QQ_HWND, HWND_TOP,0, 0, 1000, 700, SWP_SHOWWINDOW);//微信窗口置顶
SetCursorPos(18,650);//窗口移动
/*
*模拟鼠标键盘按键操作
*/
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
Sleep(100);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Sleep(500);
keybd_event(17,0,0,0);
keybd_event('V',0,0,0);
Sleep(10);
keybd_event(17,0,KEYEVENTF_KEYUP,0);
keybd_event('V',0,KEYEVENTF_KEYUP,0);//ctrl + V
Sleep(500);
keybd_event(13,0,0,0);
Sleep(10);
keybd_event(13,0,KEYEVENTF_KEYUP,0);//enter
}
}
在main.cpp中
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
QObject::connect(&w, &MainWindow::QQ_Report_Error_Info, [](const QString message) {
QClipboard *clipboard = QApplication::clipboard();
QString Test=message;
clipboard->setText(Test);
}); //这里就实现将MainWindows中的QString复制到剪切板上了
//QObject::connect(&w,SIGNAL(&MainWindow::QQ_Report_Error_Info(QString)),&w,SLOT(&MainWindow::QQ_Report_EN_Fun_slots(QString)));
return a.exec();
}