"Don't show this meesage again" checkbox in QMessagebox
-
@jsulm Thanks for this. I have tried this just now. I have written something like this
--> msg = QtWidgets.QMessageBox()
msg.setWindowTitle("What's New")
msg.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
msg.setText(ui_helper.WHAT_IS_NEW)
check_box = QtWidgets.QCheckBox("Don't show this again")
msg.setCheckBox(check_box)
msg.exec_()
check_box_status = check_box.isChecked()
settings = QtCore.QSettings()
settings.setValue(check_box_status, True)I know this is not the correct way of doing and that's why I am getting an error --> setValue has unexpected type 'bool'. But then how do I pass the status of checkbox into this function?
@Prathamesh said in "Don't show this meesage again" checkbox in QMessagebox:
settings.setValue(check_box_status, True)
Please read documentation to know how to do it properly, there are even code examples...
-
@Prathamesh said in "Don't show this meesage again" checkbox in QMessagebox:
settings.setValue(check_box_status, True)
Please read documentation to know how to do it properly, there are even code examples...
@jsulm So I have read the documentation and from that i got to know that QSettings will store the value in registry editor in our machine. So I have written a code like below-->
msg = QtWidgets.QMessageBox()
msg.setWindowTitle("What's New")
msg.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
msg.setText(ui_helper.WHAT_IS_NEW)
check_box = QtWidgets.QCheckBox("Don't show this again")
msg.setCheckBox(check_box)
msg.exec_()
check_box_status = check_box.isChecked()
settings = QtCore.QSettings('ConTest', 'Check-Box status')
settings.setValue("check_box_status", check_box_status)Now I can see the status of checkbox as true or false in the registry. I need help here. Whatever I have written in my code is correct or not? Because the pop-up is still appearing ,that means I am not making use of registry data. How can I do that in my code?
-
@jsulm So I have read the documentation and from that i got to know that QSettings will store the value in registry editor in our machine. So I have written a code like below-->
msg = QtWidgets.QMessageBox()
msg.setWindowTitle("What's New")
msg.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
msg.setText(ui_helper.WHAT_IS_NEW)
check_box = QtWidgets.QCheckBox("Don't show this again")
msg.setCheckBox(check_box)
msg.exec_()
check_box_status = check_box.isChecked()
settings = QtCore.QSettings('ConTest', 'Check-Box status')
settings.setValue("check_box_status", check_box_status)Now I can see the status of checkbox as true or false in the registry. I need help here. Whatever I have written in my code is correct or not? Because the pop-up is still appearing ,that means I am not making use of registry data. How can I do that in my code?
@Prathamesh said in "Don't show this meesage again" checkbox in QMessagebox:
Because the pop-up is still appearing
Of course it does. You do not check what you stored in settings to decide whether you should show the dialog or not...
-
@jsulm So I have read the documentation and from that i got to know that QSettings will store the value in registry editor in our machine. So I have written a code like below-->
msg = QtWidgets.QMessageBox()
msg.setWindowTitle("What's New")
msg.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
msg.setText(ui_helper.WHAT_IS_NEW)
check_box = QtWidgets.QCheckBox("Don't show this again")
msg.setCheckBox(check_box)
msg.exec_()
check_box_status = check_box.isChecked()
settings = QtCore.QSettings('ConTest', 'Check-Box status')
settings.setValue("check_box_status", check_box_status)Now I can see the status of checkbox as true or false in the registry. I need help here. Whatever I have written in my code is correct or not? Because the pop-up is still appearing ,that means I am not making use of registry data. How can I do that in my code?
@Prathamesh
So your code now stores the desired value in the registry. What do you now do about reading that value back, and then acting on it for (not showing) the dialog? -
@Prathamesh
So your code now stores the desired value in the registry. What do you now do about reading that value back, and then acting on it for (not showing) the dialog?@JonB Ok , so I have stored the value from registry using .value() method as -->
value = settings.value('check_box_status', check_box_status)Now how do I proceed further. Could you please guide me further?
-
@JonB Ok , so I have stored the value from registry using .value() method as -->
value = settings.value('check_box_status', check_box_status)Now how do I proceed further. Could you please guide me further?
@Prathamesh
You need to read the doc page and the examples. That's what development is about. They even show you how to read back a value, what have you done about that? -
@Prathamesh
You need to read the doc page and the examples. That's what development is about. They even show you how to read back a value, what have you done about that?@JonB I have read the value from registry as I said using this line -->
settings = QtCore.QSettings('ConTest', 'Check-Box status') settings.setValue("check_box_status", check_box_status) value = settings.value('check_box_status', check_box_status)
So the 1st line will create a folder in registry by the name Check_box_status
2nd line will store the value of chwck-box in registry and the 3rd line will read that value back from registry. Now my question is how to use this value to not show the pop-up again. -
Hi,
The logic has already been explained several times:
- Get the settings value
- Check what that value is
- Show or not the message box based on this value
- If the message box has been show, update the settings value
In any case, you really should use more meaningful variable and key names. It would help you quite a lot with the code flow.
-
Hi,
The logic has already been explained several times:
- Get the settings value
- Check what that value is
- Show or not the message box based on this value
- If the message box has been show, update the settings value
In any case, you really should use more meaningful variable and key names. It would help you quite a lot with the code flow.
@SGaist That is what my question is actually. The logic is understood, but the 3rd point u have mentioned is the actual problem. How to use this value to not show the pop-up. That is what I want to know.
-
@SGaist That is what my question is actually. The logic is understood, but the 3rd point u have mentioned is the actual problem. How to use this value to not show the pop-up. That is what I want to know.
@Prathamesh said in "Don't show this meesage again" checkbox in QMessagebox:
but the 3rd point u have mentioned is the actual problem
The third point is a simple if () statement checking the value of the setting...
-
@Prathamesh said in "Don't show this meesage again" checkbox in QMessagebox:
but the 3rd point u have mentioned is the actual problem
The third point is a simple if () statement checking the value of the setting...
@jsulm Of course it is if statement, my question was not about how to check the value. My question was how to use that value to show message-box or not to show it. I hope this time it is clear.
-
@jsulm Of course it is if statement, my question was not about how to check the value. My question was how to use that value to show message-box or not to show it. I hope this time it is clear.
How you would do it without
QSettings
? Same thing. Doesn't matter where thebool
is coming from. Set it somewhere (member / class var) and then put the check before the code that shows the messageBox.
I don't see any problem or difficulty there... -
@Prathamesh said in "Don't show this meesage again" checkbox in QMessagebox:
hi you just need to adjust your logic
settings = QtCore.QSettings('ConTest', 'Check-Box status') IsHidden = settings.value('check_box_status', check_box_status) if not IsHidden : // its one block msg = QtWidgets.QMessageBox() msg.setWindowTitle("What's New") msg.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) msg.setText(ui_helper.WHAT_IS_NEW) check_box = QtWidgets.QCheckBox("Don't show this again") msg.setCheckBox(check_box) msg.exec_() check_box_status = check_box.isChecked() settings.setValue("check_box_status", check_box_status)
-
@Prathamesh said in "Don't show this meesage again" checkbox in QMessagebox:
hi you just need to adjust your logic
settings = QtCore.QSettings('ConTest', 'Check-Box status') IsHidden = settings.value('check_box_status', check_box_status) if not IsHidden : // its one block msg = QtWidgets.QMessageBox() msg.setWindowTitle("What's New") msg.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) msg.setText(ui_helper.WHAT_IS_NEW) check_box = QtWidgets.QCheckBox("Don't show this again") msg.setCheckBox(check_box) msg.exec_() check_box_status = check_box.isChecked() settings.setValue("check_box_status", check_box_status)
@mrjj Hi , I have one doubt here. The settings variable here is creating a folder in windows registry editor. But my question is, when i close my application and relaunch it again, will this settings variable not create one more folder?
-
@mrjj Hi , I have one doubt here. The settings variable here is creating a folder in windows registry editor. But my question is, when i close my application and relaunch it again, will this settings variable not create one more folder?
@Prathamesh said in "Don't show this meesage again" checkbox in QMessagebox:
But my question is, when i close my application and relaunch it again, will this settings variable not create one more folder?
Therefore the settings have a key string. So that the same, stored value is read in again.
-
How you would do it without
QSettings
? Same thing. Doesn't matter where thebool
is coming from. Set it somewhere (member / class var) and then put the check before the code that shows the messageBox.
I don't see any problem or difficulty there...Ok, So should I go ahead with this code?
-
Ok, So should I go ahead with this code?
@Prathamesh said in "Don't show this meesage again" checkbox in QMessagebox:
Ok, So should I go ahead with this code?
Yes.