Witam, piszę program w Qt, który ma wypalać pliki iso na pendrivie(taki sam jak UltraISO). Chcę, aby w comboboxie aktualizacja dostępnych pendrivów następowała wtedy, gdy program dostanie komunikat od systemu o pojawieniu się/usunięciu jakiegoś urządzenia. Dowiedziałem się, że muszę do tego wykorzystać funkcję nativeEvent, która wywoła się automatycznie, gdy pojawi się pojawi się/zniknie jakiś pendrive. I teraz mam pytanie w jaki sposób mam ją wykorzystać? Czy mam stworzyć nową klasę, która dziedziczy po QFrame i tam umieścić tę funkcję?( w ten sposób właśnie zrobiłem i nie działa) Czy mam moją główną klasę programu dziedziczyć po QFrame i tam ją umieścić? Z tego co czytałem to klasa główna nie powinna być modyfikowana. A może brakuje czegoś w mojej funkcji? Aktualnie powinien zostać nadpisany mój Textedit, gdy jakieś urządzenie się pojawi lub zniknie. ISO to główna klasa programu.
class Native
: public QFrame, public ISO
{
Q_OBJECT
bool nativeEvent(const QByteArray &, void * message, long * result) override
{
auto & msg = *static_cast < const MSG *>(message);
if (msg.message == WM_DEVICECHANGE)
{
ui.textEdit_wiadomosc->append("Zmiana");
}
return false;
}
};
------------------------------------------------------
ISO::ISO(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
QTimer *checkingForAvailablePendrives = new QTimer(this);
connect(checkingForAvailablePendrives, SIGNAL(timeout()), this, SLOT(checkingForAvailablePendrives()));
connect(ui.pushButton_zapisz, SIGNAL(clicked()), this, SLOT(showAvailablePendrives()));
checkingForAvailablePendrives->start(1000);
connect(ui.pushButton_zamknij, SIGNAL(clicked()), this, SLOT(closeProgram()));
}
--------------------------------------------------------
class ISO : public QMainWindow
{
Q_OBJECT
public:
ISO(QWidget *parent = 0);
~ISO();
protected:
Ui::ISOClass ui;
private slots:
void showAvailablePendrives();
void checkingForAvailablePendrives();
void closeProgram();
};