需求:speedcrunch 這個軟件是開源的計算器軟件。配合launch類軟件使用時,忘記關(guān)閉就經(jīng)常很多窗口,強(qiáng)迫癥,從網(wǎng)上搜索對版本進(jìn)行了修改。
#include "gui/mainwindow.h"
#include <QCoreApplication>
#include <QApplication>
#include <QSharedMemory>
#include <QMessageBox>
#include <Windows.h>
#include <WinUser.h>
int main(int argc, char* argv[])
{
QApplication application(argc, argv);
static QSharedMemory *singleApp = new QSharedMemory("SingleApp");//創(chuàng)建“SingleApp”的共享內(nèi)存塊
if(!singleApp->create(1))//創(chuàng)建失敗,說明已經(jīng)有一個程序運行,
{
//彈出提示框注意:該提示應(yīng)該在 qApp->quit();之前,否則提示框?qū)婚W而過
//QMessageBox::information(NULL,"tips","The program is already running");
QString name = "Qt5152QWindowIcon";//窗口的類名
QString windowname = "SpeedCrunch";//窗口標(biāo)題名
HWND hwnd = FindWindow((LPCWSTR)name.unicode(),(LPCWSTR)windowname.unicode());//查找窗口句柄
if (hwnd == 0) {
QMessageBox::information(NULL,"tips","not find wind");
}
ShowWindow(hwnd, SW_RESTORE);//激活并置頂窗口,ShowWindow里面的參數(shù)可以網(wǎng)上搜一下,不同功能不同參數(shù)
SetForegroundWindow(hwnd);
qApp->quit();//退出當(dāng)前程序
return -1;
}
QCoreApplication::setApplicationName("SpeedCrunch");
QCoreApplication::setOrganizationDomain("speedcrunch.org");
MainWindow window;
window.show();
application.connect(&application, SIGNAL(lastWindowClosed()), &application, SLOT(quit()));
return application.exec();
}
差異圖下圖:
findwindow的方法需要添加user32的庫,因為speedcrunch已經(jīng)添加,則在編譯文件中未改動。?
效果:
文章來源:http://www.zghlxwxcb.cn/news/detail-682700.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-682700.html
到了這里,關(guān)于[QT]設(shè)置程序僅打開一個,再打開就喚醒已打開程序的窗口的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!