我创建了一个应用程序,它有一个主窗口,可以打开一个对话框(问题,错误等)。我没有使用 public override void ViewDidLoad()
{
base.ViewDidLoad();
// Perform any additional setup after loading the view, typically from a nib.
UIBarButtonItem backButton = new UIBarButtonItem("title", UIBarButtonItemStyle.Bordered, handleBack);
this.NavigationItem.LeftBarButtonItem = backButton;
}
public void handleBack(object sender, EventArgs e)
{
Console.WriteLine("back!");
}
或QMessageBox.warning()
等等,因为我想稍微自定义对话框。
但每次我打开一个新的Dialog,在Windows任务栏(我正在使用Windows 10)时,会打开一个新的“标签”,这有点烦人。
我的代码(缩短):
QMessageBox.question()
注意:通常,从菜单或按钮调用对话框。
问题:如何在不创建新的“任务栏标签”的情况下让对话框显示在主窗口中?
答案 0 :(得分:1)
解决方案非常简单:将QMainWindow
的引用传递给QDialog
的构造函数将完成这项工作,例如:
class MessageBox(QtGui.QDialog):
def __init__(self, parent, title, message, icon="info"):
super(MessageBox, self).__init__(parent)
...
然后从继承自QMainWindow
:
class MainWindow(QtGui.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
#connect button with function, e.g.:
mybutton.clicked.connect(self.open_dialog)
def open_dialog(self):
MessageBox(self)
也许这对任何人都有帮助!
答案 1 :(得分:0)
如果您将QDialog
的父级设置为窗口,它将仅显示为任务栏上的一个项目。这通常是QMessageBox
的第一个参数。
class MessageBox:
def __init__(self, parent, title, message):
msg = QtGui.QMessageBox(parent)
另外,如果你真的想要创建一个自定义对话框,你也可以只从QDialog
创建子类。