[Solved]My dialog inside of my mainwindow is not working



  • Hey , yesterday I opened a post:

    http://qt-project.org/forums/viewthread/42376/

    and the guy said that I should try creating a transparent window , and I did it , I included the project " the transparent window " to my current project which has the problem that I opened a post for.. anyways my other dialogs are working when I use show and other methods , but when I used this:

    @
    FrameLess=new FramelessWindow(this);
    FrameLess->exec(); // show() is not working
    @

    it works , only problem is it hides my mainwindow and it doesn't really show the background transparent window

    here's the code for the frameless window:

    @

    this->setStyleSheet("background:transparent");
    this->setAttribute(Qt::WA_TranslucentBackground);
    this->setWindowFlags(Qt::FramelessWindowHint);
    this->setWindowState(Qt::WindowFullScreen);

    @

    I only want it to show when I click any button " shows as a full screen transparent window that I can click anywhere in it without effecting the programs behind the window , I want it like a transparent wall :D



  • Well , I think I got it only problem as I said it doesn't show...

    I added mouse events where when I press the left mouse button I can select anywhere in the widget, the only problem which is annoying is:

    @
    this->setAttribute(Qt::WA_TranslucentBackground);
    @

    this is the function that lets the widget be transparent , but when I use it the widget shows in the bar below " where all programs that are open are there " but i can select anything in the screen , which means it's not showing on the screen ?



  • I've tried everything :( , is there another method to do this ?

    I saw this but still no one have a solution:

    http://www.qtcentre.org/threads/53362-Qt5-Translucent-alpha-channel-problems



  • Here is how I created a transparent window that fly on top of all windows and allows me to grab an area of a desktop. The key is a Qt::ToolTip.
    I have found this idea somewhere but I don't have a link.
    It works for me on Linux, have not tried it on Windows or MacOSX.

    @
    SelectImage::SelectImage(QWidget parent)
    : QWidget(parent)
    , m_rubberBand(nullptr)
    {
    setAttribute(Qt::WA_TranslucentBackground, true);
    setWindowFlags(Qt::ToolTip | Qt::FramelessWindowHint);
    QDesktopWidget
    desktop = QApplication::desktop();
    resize(desktop->screenGeometry().size());
    setCursor(Qt::CrossCursor);
    }
    @

    Then I used the events from QRubberBand example and here is my mouseReleaseEvent
    @
    void SelectImage::mouseReleaseEvent(QMouseEvent *event)
    {
    m_close = event->pos();
    m_rubberBand->hide();
    QRect grabRect = QRect(m_open, m_close).normalized();
    m_pixmap = QPixmap::grabWindow(QApplication::desktop()->winId())
    .copy(grabRect);
    close();
    parentWidget()->show();
    }
    @



  • Still didn't work :(

    not sure if it needs to be a child of another widget ? but I think it won't work since I've tried yesterday " not your method , but the one that I've posted " but still didn't work.

    the window doesn't show/display , it's like there's nothing , I can't use my events at all! but when I delete

    @
    this->setAttribute(Qt::WA_TranslucentBackground);
    @

    it works fine except it's not transparent.



  • Do you use style-sheets ? I think if you apply style-sheets then widgets behavior is different.
    If you building screen snapshot tool then there is another idea.

    • On start create a QPixmap from desktop
    • Create your "transparent" widget
    • Set background of the widget from the QPixmap.
    • Show new widget
    • Use QRubberBand to select area.
    • On mouseRelease close the widget.


  • [quote author="Project try" date="1399810333"]not sure if it needs to be a child of another widget ?[/quote]
    Yes transparent window is another QWidget that is shown on demand.
    I've used QWidget as parent class not QDialog.



  • Thanks , I actually thought of this yesterday , but never thought it would work , it actually worked doing what you've said , thanks so much ^^

    but there's a little problem I think I'll make a new post about it since it's not related to this problem.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.