How to open dialog box on top of the application if two screen are connected?
-
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?
-
Hi
Im not 100% sure Qt::SplashScreen is compatiple with Qt::Dialog flagQt::SplashScreen 0x0000000e | Window Indicates that the window is a splash screen. This is the default type for QSplashScreen.
Normally used with QSplashScreen widget.