İletişim kutusunu, kullanıcı arabiriminizle .ui
dosyanızdan ayarlamanız gerekir. Qt uic
derleyici, kodunuza eklemeniz gereken .ui
dosyanızdan bir başlık dosyası oluşturur. .ui
dosyanızın about.ui
olarak adlandırıldığı ve İletişim Kutusu'nun About
olarak adlandırıldığı varsayılırsa, , Ui_About
sınıfını içeren ui_about.h
dosyasını oluşturur. kurulum UI farklı yaklaşımlar en basit en Eğer daha iyi bir yaklaşım daha iyi diyaloglar kapsüller beri içinde belirli iletişim özgü herhangi bir işlevi uygulamak, böylece, devralma kullanmaktır
#include "ui_about.h"
...
void MainWindow::on_actionAbout_triggered()
{
about = new QDialog(0,0);
Ui_About aboutUi;
aboutUi.setupUi(about);
about->show();
}
yapabilirsiniz vardır alt sınıfı:
AboutDialog.h:
#include <QDialog>
#include "ui_about.h"
class AboutDialog : public QDialog, public Ui::About {
Q_OBJECT
public:
AboutDialog(QWidget * parent = 0);
};
AboutDialog.cpp:
AboutDialog::AboutDialog(QWidget * parent) : QDialog(parent) {
setupUi(this);
// perform additional setup here ...
}
Kullanımı: Her durumda
#include "AboutDialog.h"
...
void MainWindow::on_actionAbout_triggered() {
about = new AboutDialog(this);
about->show();
}
, önemli kod setupUi()
yöntemini aramak.
BTW: Yukarıdaki koddaki iletişim kutusu modal değildir. Kalıcı bir iletişim kutusu göstermek için, iletişim kutusunun windowModality
bayrağını Qt::ApplicationModal
olarak ayarlayın veya show()
yerine exec()
kullanın.
Teşekkür ederim, Andreas! Şu an için en basit olana gidiyor ... Gerçek şu ki, ui_about.h yaratılmadı ve şimdi ön ayarlı değil. Yani, önce belirttiğiniz kod ile proje derlemiyor. Elle ui_about.h oluşturmanın bir yolu var mı? .. –
El ile 'uic about.ui -o ui_about.h' ile oluşturabilirsiniz. Ancak derleme sisteminiz buna dikkat etmelidir - '.pro' dosyanızda' FORMS = about.ui' öğesinin bulunduğundan emin olun. –
.pro dosyasında tuhaf girdiniz var mı? Kaynak dosyaların oluşturulmadığı bir süre önce benzer bir sorun oluştu: http://stackoverflow.com/questions/12380171/qmake-not-generating-binary-resource-files/12431570#12431570 –