Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to open dialog box on top of the application if two screen are connected?
QtWS: Super Early Bird Tickets Available!

How to open dialog box on top of the application if two screen are connected?

Scheduled Pinned Locked Moved Unsolved General and Desktop
qdialogsplashscreensplash
28 Posts 4 Posters 12.1k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Y Offline
    Y Offline
    Yash001
    wrote on last edited by
    #1

    I wanted to open Slash screen before opening our Software and One Dialog box after complete opening of the software.

    I have second screen is connected with Laptop. My Visual studio is opened into second screen, whenever I run the code at that time software is open into second screen but the dialog box and SplashScreen is open into the First screen.

    how can I set something like both should open wherever the Software is open.
    if the software is open into the First screen then I wanted to both dialog and slash screen both should open into the First screen. if the software open into second screen then both should open into second screen.

    Here I attach small portion of the code which i wrote for dialog.

    void MainWindowUI::ShowDataRecoveryInformDialog(QWidget parent) {
    QDialog
    dialog = new QDialog(parent, Qt::SplashScreen);
    auto dialogLay = new QVBoxLayout(dialog);
    dialogLay->addWidget(PBT("button 1"));
    dialogLay->addWidget(PBT("button 2"));
    dialog->exec();
    }

    1 Reply Last reply
    0
  • mrjjM Offline
    mrjjM Offline
    mrjj Lifetime Qt Champion
    wrote on last edited by
    #2

    Hi
    Is parent set ?
    Normally it opens where ever parent is.

    what do you give as paramter for ShowDataRecoveryInformDialog?

    1 Reply Last reply
    0
  • Y Offline
    Y Offline
    Yash001
    wrote on last edited by
    #3

    Yes I set the parent as m_mainWindow.
    /**********************MainWindow/
    class MainWindow : public QMainWindow {
    Public :
    void CreateUI();
    private:
    MainWindowUI *ui;
    };

    MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),
    ui(new MainWindowUI(this))
    {
    ui->CreateUI();
    }

    /MainWindowUI*/

    class MainWindowUI : public QObject {
    MainWindow *m_mainWidnow;
    };
    void MainWindowUI::CreateUI() {
    CreateCentralWidget();
    }

    void MainWindowUI::CreateCentralWidget(){
    ShowDataRecoveryInformDialog (m_mainWidnow);
    }

    mrjjM 1 Reply Last reply
    0
  • mrjjM Offline
    mrjjM Offline
    mrjj Lifetime Qt Champion
    replied to Yash001 on last edited by
    #4

    hi
    and m_mainWidnow has a value at that point in time ?
    To be sure please try

    void MainWindowUI::CreateCentralWidget(){
    qDebug() << "parent = " << m_mainWidnow;
    ShowDataRecoveryInformDialog (m_mainWidnow);
    }

    Im using 2 monitors at work and it always open on top of parent with no extra effort on my part.

    1 Reply Last reply
    0
  • Y Offline
    Y Offline
    Yash001
    wrote on last edited by
    #5

    yes m_mainWindow has value.

    I try another thing into ShowDataRecoveryInformDialog Funcation.
    Instead of the passing parent as argument. I set the parent with help of setParent property it is work.

    Thank you for Help @mrrj

    1 Reply Last reply
    0
  • Y Offline
    Y Offline
    Yash001
    wrote on last edited by
    #6

    in addition, I try like
    QDialog* dialog = OBJ_NAME(new QDialog(m_mainWindow, Qt::SplashScreen), "notes-dialog");
    It is also create the same issue.

    only setParent is work fine.

    mrjjM 1 Reply Last reply
    0
  • SGaistS Offline
    SGaistS Offline
    SGaist Lifetime Qt Champion
    wrote on last edited by
    #7

    Hi,

    Why not use this rather than m_mainWindow ?

    Interested in AI ? www.idiap.ch
    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

    Y 1 Reply Last reply
    1
  • mrjjM Offline
    mrjjM Offline
    mrjj Lifetime Qt Champion
    replied to Yash001 on last edited by
    #8

    @Yash001
    and you have like
    ShowDataRecoveryInformDialog::ShowDataRecoveryInformDialog(QWidget *parent) : QDialog (parent)

    in your dialog so you forward parent to base?

    Y 1 Reply Last reply
    0
  • Y Offline
    Y Offline
    Yash001
    replied to SGaist on last edited by
    #9

    @SGaist I already try it but it is not work. i got this error.

    Severity Code Description Project File Line Suppression State
    Error C2664 'void QWidget::setParent(QWidget *,Qt::WindowFlags)': cannot convert argument 1 from 'MainWindowUI *const ' to 'QWidget *'

    1 Reply Last reply
    0
  • SGaistS Offline
    SGaistS Offline
    SGaist Lifetime Qt Champion
    wrote on last edited by
    #10

    Can you show your complete code for your MainWindow ?

    It looks like you are modifying the wrong file.

    Interested in AI ? www.idiap.ch
    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

    Y 1 Reply Last reply
    0
  • Y Offline
    Y Offline
    Yash001
    replied to mrjj on last edited by
    #11

    @mrjj
    m_mainWindow is my main Object, it is create the whole application on GUI side by calling createUI funcation.

    yes i was try to set the parent as main object.

    I make this change and code work perfectly fine. and got the output, which I want.

    void MainWindowUI::ShowDataRecoveryInformDialog() {
    QDialog dialog = new QDialog( );

    dialog->setWindowFlags(Qt::SplashScreen);
    dialog->setParent(m_mainWindow);

    auto dialogLay = new QVBoxLayout(dialog);
    dialogLay->addWidget(PBT("button 1"));
    dialogLay->addWidget(PBT("button 2"));
    dialog->exec();
    }

    1 Reply Last reply
    0
  • Y Offline
    Y Offline
    Yash001
    replied to SGaist on last edited by
    #12

    @SGaist by using setParent and set WindowFlag property. i am able to open dialog on top of the Application.

    dialog->setWindowFlags(Qt::SplashScreen);
    dialog->setParent(m_mainWindow);

    Thank you Sir for your help.

    1 Reply Last reply
    0
  • mrjjM Offline
    mrjjM Offline
    mrjj Lifetime Qt Champion
    wrote on last edited by
    #13

    Ok should be the same as, or else im very wondering

    void MainWindowUI::ShowDataRecoveryInformDialog() {
    QDialog dialog = new QDialog( m_mainWindow);
    dialog->setWindowFlags(Qt::SplashScreen);
    auto dialogLay = new QVBoxLayout(dialog);
    dialogLay->addWidget(PBT("button 1"));
    dialogLay->addWidget(PBT("button 2"));
    dialog->exec();
    }
    
    Y 1 Reply Last reply
    0
  • Y Offline
    Y Offline
    Yash001
    replied to mrjj on last edited by
    #14

    @mrjj

    I don't know. what is different but now it is work. i did not make any change except setting the property

    before:
    QDialog *dialog = new QDialog(parent, Qt::SplashScreen);

    now :

    QDialog* dialog = new QDialog();
    dialog->setWindowFlags(Qt::SplashScreen);
    dialog->setParent(m_mainWindow);

    mrjjM 1 Reply Last reply
    0
  • mrjjM Offline
    mrjjM Offline
    mrjj Lifetime Qt Champion
    replied to Yash001 on last edited by
    #15

    @Yash001
    ok, im not sure either. seems the same :)

    1 Reply Last reply
    0
  • Y Offline
    Y Offline
    Yash001
    wrote on last edited by
    #16

    I found the different.

    it is work fine.

    dialog->setWindowFlags(Qt::SplashScreen);
    dialog->setParent(m_mainWindow);

    it is not work.

    dialog->setParent(m_mainWindow);
    dialog->setWindowFlags(Qt::SplashScreen);

    mrjjM 1 Reply Last reply
    1
  • mrjjM Offline
    mrjjM Offline
    mrjj Lifetime Qt Champion
    replied to Yash001 on last edited by
    #17

    @Yash001
    Ok so Qt::SplashScreen does something with parent.

    Y 1 Reply Last reply
    0
  • Y Offline
    Y Offline
    Yash001
    replied to mrjj on last edited by
    #18

    @mrjj May be. It is qt default function.

    mrjjM 1 Reply Last reply
    0
  • mrjjM Offline
    mrjjM Offline
    mrjj Lifetime Qt Champion
    replied to Yash001 on last edited by
    #19

    @Yash001
    yeah its a windows flag.

    Y 1 Reply Last reply
    0
  • Y Offline
    Y Offline
    Yash001
    replied to mrjj on last edited by
    #20

    @mrjj

    dialog->setWindowFlags(Qt::SplashScreen);
    dialog->setParent(m_mainWindow);
    In this case I got dialog box on top of the screen but it is make another issue

    dialog->exec(); is not work as per expectation. without responding the to Dialog user access the other page also.

    In other word, user can access both screen Main application as well as Dialog box. how to block access on other widget until get response from the user in dialog box?

    mrjjM 1 Reply Last reply
    0

  • Login

  • Login or register to search.
  • First post
    Last post
0
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved