How to open dialog box on top of the application if two screen are connected?
-
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();
} -
Hi
Is parent set ?
Normally it opens where ever parent is.what do you give as paramter for ShowDataRecoveryInformDialog?
-
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);
} -
hi
and m_mainWidnow has a value at that point in time ?
To be sure please tryvoid 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.
-
Hi,
Why not use
this
rather thanm_mainWindow
? -
@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 *' -
Can you show your complete code for your MainWindow ?
It looks like you are modifying the wrong file.
-
@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();
} -
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(); }
-
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); -
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 issuedialog->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?