CDlgScreenShot::CDlgScreenShot(QWidget *parent) :QDialog(parent, Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint //这个标志是在x11下有用,查看帮助QWidget::showFullScreen() | Qt::Tool | Qt::WindowStaysOnTopHint | Qt::CustomizeWindowHint ), m_x(0), m_y(0), m_width(0), m_height(0), m_Editor(this) { this->setFixedSize(qApp->desktop()->size()); resize(qApp->desktop()->size()); setAttribute(Qt::WA_TranslucentBackground,true); setCursor(Qt::CrossCursor); #ifdef ANDROID QDesktopWidget *pScreen = qApp->desktop(); QPixmap pix(pScreen->geometry().size()); pScreen->render(&pix); m_imgDesktop = pix.toImage(); #else WId id = qApp->desktop()->winId(); QScreen *pScreen = QGuiApplication::primaryScreen(); m_imgDesktop = pScreen->grabWindow(id, 0, 0, pScreen->geometry().width(),//pScreen->availableGeometry().width(), pScreen->geometry().height()//pScreen->availableGeometry().height() ).toImage(); #endif initSelectParam(); m_Editor.hide(); connect(&m_Editor,SIGNAL(sigReset()),this,SLOT(onSigReset())); connect(&m_Editor,SIGNAL(sigSelectImg(QPixmap)),this,SLOT(onSigSelectedImg(QPixmap))); connect(&m_Editor,SIGNAL(sigCancel()),this,SLOT(onSigCancel())); }