My function:Hi!I've create a QMessageBox and tried to use clickedButton() to determine which button is clicked, like illustrated in QMessageBox::clickedButton ()'s document.
(defun yes-no-cancel-dialog (text informative-text yes-text no-text cancel-text)
(with-objects ((message-box (#_new QMessageBox)))
(#_setText message-box text)
(#_setInformativeText message-box informative-text)
(let ((yes-button (#_addButton message-box yes-text (#_QMessageBox::YesRole)))
(no-button (#_addButton message-box no-text (#_QMessageBox::NoRole)))
(cancel-button (#_addButton message-box cancel-text (#_QMessageBox::RejectRole)))
(clicked-button))
(#_exec message-box)
(setf clicked-button (#_clickedButton message-box))
(format t "clicked:~A~%" (#_clickedButton message-box))
(format t "clicked:~A~%" yes-button)
(format t "clicked:~A~%" no-button)
(format t "clicked:~A~%" cancel-button)
(cond ((eq clicked-button yes-button) :yes)
((eq clicked-button no-button) :no)
((eq clicked-button cancel-button) :cancel)
(t nil)))))When I click "yes" button, I can see something like:I tried eq, eql, equal and equalp, none of them return t when comparing clicked-button with yes-button. What can I do to compare two pointers?
clicked:#<QPushButton 0x02003E18>
clicked:#<QPushButton 0x02003E18>
clicked:#<QPushButton 0x02004098>
clicked:#<QPushButton 0x02004428>
Thanks in advance.- Rujia