Пример #1
0
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()));
}