Çok sayıda QPushButtons oluşturdum, tıklatılan sinyal eklendi ve QT DESIGNER
ile tüm düğmelere ´deneme() ´ bir yuva eklendi ve yapmak istediğim şey; Herhangi bir tuşa bastığımda, bazı işlemler yapılmalı ve son olarak buton devre dışı bırakılmalı, ancak hangi butonun tıklandığından emin değiliz. Düğmeleri setEnabled()
ve isEnabled()
ile devre dışı bırakabileceğimi biliyorum, ancak bunları nasıl devre dışı bırakacağımı bilmiyorum.QPushButton nasıl devre dışı bırakılır
cevap
Doğru anladım Aynı yuvaya çeşitli QPushButtons bağladıysanız. Yuva deneme() içinde hangi düğmelerin tıklandığını bilmek istersiniz. Sen gibi bir şey yapabilirsiniz:
void deneme() {
QPushButton * b = qobject_cast<QPushButton *>(sender());
if (b) {
if (b == button1) { //button1 clicked
//doSomethin();
}
else {
if (b == button2) {
//doSomething();
}
}
b->setEnabled(false);
}
}
Neden setEnabled çalışmıyor? The reference.
Yani basit bir setEnabled (false); yeterlidir.
QPushButton* button = new QPushButton(someParent);
button->setEnabled(false);
düğmesinin click olayı bir olay işleyicisi bağlayan varsa belki QT belgelerine bakmak gerekir: Signal and slots
Sorun, Gui'yi oluşturdum ve Qt tasarımcısı ile tüm düğmeyi ekledim. Herhangi bir tuşa bastıktan sonra bazı işlemler yapılacak ve son olarak buton devre dışı bırakılmalıdır. – Cengaver
Sen Düğme sağ tıkladıktan sonra devre dışı olduğu anlamına? Ben muhtemelen böyle bir şey yapmak istiyorum bu durumda sanırım:
class MyWidget : public QWidget
{
Q_OBJECT
// ...
private slots:
void disableButton();
private:
QPushButton *myButton;
// ...
};
MyWidget::MyWidget(QWidget *parent = NULL) : QWidget(parent)
{
///...
myButton = new QPushButton("click me", this);
connect(myButton, SIGNAL(clicked), this, SLOT(disableButton));
// ...
}
void MyWidget::disableButton()
{
myButton->setEnabled(false);
}
Cevabınız muhtemelen doğrudur ama Sorun, Gui'yi oluşturdum ve Qt tasarımcısı ile tüm düğmeyi ekledim. Herhangi bir tuşa bastıktan sonra bir işlem yapılacak ve son olarak düğme devre dışı bırakılmalı ve bu programda çok yeniyim :( – Cengaver
Sorununuz, bu yöntemde hangi tuşa basıldığını tanımlayamıyorsunuz demektir. QSignalMapper'ı kullanmanız yeterlidir.Onuzlu parametreleri (QPushButton'da tıklatılmış() sinyali gibi) bir parametreyi kabul eden yuvalara eşlemenize olanak sağlar.Bu yüzden hangi tuşun belirlendiğini belirten parametre almak için yukarıdaki kod örneğindeki disableButton() yöntemini değiştirebilirsiniz. – beduin
Çok teşekkür ederim – Cengaver
Bruno'nun yanıt doğrudur.
sender();
bir QObject*
kullanarak bir QPushButton*
için döküm için döner ya C tipi dökme yani QPushButton* clickedButton = (QPushButton*)(sender())
veya QPushButton* clickedButton = static_cast<QPushButton*>(sender())
veya QPushButton * clickedButton = qobject_cast (gönderici()); bildiğim kadarıyla qobject_cast, dynamic_cast <> C++ 'dakine benzer çalışır. Fakat derleme problemleri yaşıyorsanız, yukarıda verilen herhangi bir çözüm işe yaramaz.
Çok teşekkür ederim – Cengaver
- 1. Bazı koşullarda ActionBar.TabListener nasıl devre dışı bırakılır/devre dışı bırakılır
- 2. .NET: System.Transactions'da promosyonu nasıl devre dışı bırakılır?
- 3. DrawerLayout Gölge nasıl devre dışı bırakılır
- 4. Emacs'ta x yapıştırma nasıl devre dışı bırakılır
- 5. JQuery Mousewheel: Nasıl devre dışı bırakılır?
- 6. hız günlükleri nasıl devre dışı bırakılır
- 7. active_admin'in toplu eylemi nasıl devre dışı bırakılır?
- 8. Apache2'de mod_deflate nasıl devre dışı bırakılır?
- 9. GitLab: Otomatik başlangıç nasıl devre dışı bırakılır?
- 10. AngularJS'deki girdilerin kırpılması nasıl devre dışı bırakılır?
- 11. Emacs'te saçak nasıl devre dışı bırakılır?
- 12. ScrollView kaydırması nasıl devre dışı bırakılır?
- 13. Android'de ListView'i tıklayarak nasıl devre dışı bırakılır?
- 14. Bir kendogrid'de sayfalama nasıl devre dışı bırakılır
- 15. Django: modelinde sipariş nasıl devre dışı bırakılır
- 16. GWT ValueListBox nasıl devre dışı bırakılır?
- 17. Yammer sohbeti tamamen nasıl devre dışı bırakılır?
- 18. zaten ayırtılmış tarihler nasıl devre dışı bırakılır?
- 19. CakePHP Form Combo nasıl devre dışı bırakılır?
- 20. ContextMenuStrip'deki menü öğeleri nasıl devre dışı bırakılır?
- 21. Matris matrisi nasıl devre dışı bırakılır?
- 22. QTableView'de Düzenleme modu nasıl devre dışı bırakılır?
- 23. Geliştirme'de ActionMailer nasıl devre dışı bırakılır?
- 24. EGit geçici olarak nasıl devre dışı bırakılır?
- 25. İletişim kutuları nasıl devre dışı bırakılır - alert()?
- 26. Vue-cli'da ESLint nasıl devre dışı bırakılır?
- 27. Dokunma olayları SwipeRefreshLayout'ta nasıl devre dışı bırakılır?
- 28. Video çekimi nasıl devre dışı bırakılır UIImagePickerController
- 29. Tkinter'da bir Combobox nasıl devre dışı bırakılır?
- 30. Manzara moduna döndürme nasıl devre dışı bırakılır?
Bu doğru olduğunu düşünüyorum ama "qobject_hd" bu kapsamda bildirilmemiş olsa bile hata veriyor "qobject.h" – Cengaver