我有一个QDialog,我读了很多关于show(),exec()和open()的差异.不幸的是,我从来没有找到一个解决方案来改变运行时对话框的模态.我有一个应用程序,从那里我的QDialog启动.我在这个对话框中有一个切换按钮,点击它,QDialog应该改变模态,这样就可以与应用程序进行交互 - 但这不应该一直发生 - 只要选中切换按钮.
有可能吗?我无法解决设置setModal(true/false)的问题,这只是允许我启动它模态,切换按钮并将其设置为非模态,但后来我不能回到模态.
这里有一些代码:
启动对话框:
从主窗口:
_dialog = new ToggleModalDialog(this, id, this);
_dialog->setWindowModality(Qt::ApplicationModal);
_dialog->open();
Run Code Online (Sandbox Code Playgroud)
这里是ToggleModalDialog中的切换槽
void ToggleModalDialog::changeModality(bool checkState)
{
if(checkState)
{
this->setWindowModality(Qt::NonModal);
ui->changeModalityButton->setChecked(true);
this->setModal(false);
}
else
{
this->setWindowModality(Qt::ApplicationModal);
ui->changeModalityButton->setChecked(true);
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我有一个生成两个JDialogs的JFrame。这三个窗口中的每个窗口都必须是可聚焦的(这是我当前编写的方式),但是JFrame不会放在对话框的顶部。当您单击任一对话框时,它们会彼此弹出(就像一个人所期望的那样),但是JFrame只是拒绝出现在最前面。
我需要它们保留JDialogs(而不是JFrames本身),因为大多数当前行为都是可取的(即,当另一个窗口/应用程序阻止任何或所有窗口时,如果选择任何窗口,它们都位于最前面) (而三个JFrame只会导致选中的一个出现)。
我的JDialogs构造函数可以达到以下效果:
SubDialog(JFrame parent /*, a handful, ofOther arguments */){
super(parent, ModalityType.MODELESS); //not even the modeless helped
setAlwaysOnTop(false); //not even the not always on top helped
setUndecorated(true); //maybe this has something to do with it (unlikely, just fyi)?
//some simple variable assignments
}
Run Code Online (Sandbox Code Playgroud)
我什至试图setAlwaysOnTop(true)在我的JFrame中扔一个。没有骰子。我感到绝望,甚至尝试了以下数字之一:
MyJFrame(String title){
super(title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addWindowFocusListener(new WindowAdapter(){
public void windowGainedFocus(WindowEvent e){
final Window w = e.getWindow();
//PLEASE come to the front
w.toFront();
//even MOAR desperation
SwingUtilities.invokeLater(new Runnable(){
public void run(){
w.toFront(); //STILL no …Run Code Online (Sandbox Code Playgroud) 我有两个来自同一系列的图像,但两个图像的实例编号都与 6相同。这可能吗????根据我的理解,系列实例编号对于该系列中的图像来说是唯一的。所以请帮助我......无论如何,是否可以从模态工作站????
我试图在单击"注册"按钮时打开一个新的JDialog ..
但我无法制作JDialog模式..
我尝试过setModal(true)和setModalityType(ModalityType.DOCUMENT_MODAL); 但没有运气..(我正在使用Eclipse的WindowBuilder插件)
PS:我是JAVA的新手..
这是我的代码......
import java.awt.BorderLayout;
import java.awt.Dialog.ModalityType;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.Frame;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JScrollPane;
import javax.swing.JLabel;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JComboBox;
import javax.swing.JButton;
import javax.xml.ws.handler.MessageContext;
public class loginpage extends JFrame {
private JPanel contentPane;
private JTextField userid;
private JPasswordField password;
/**
* Launch the …Run Code Online (Sandbox Code Playgroud) 我有一个带有编辑选项的网格,在单击编辑按钮时,我需要重定向到一个编辑页面。要求是将此编辑页面作为背景(上一页)变灰的弹出窗口。
我尝试了模态弹出窗口,但控件位于单独的页面上。
我尝试了带有面板和 Iframe 的模式弹出窗口:这有效..但是出现了另一个问题。我需要在“保存”或“取消”按钮上关闭页面但单击。这些控件将在编辑页面上而不是在上一个页面上页面。任何帮助表示赞赏。
谢谢拉贾特