Могу ли я использовать опросы QUdpSockets wo или пользовательские классы в Qt?

Прежде всего, вам следует избегать использования этого; C # - строго типизированный язык, поэтому используйте преимущества безопасности и производительности типа, которые сопровождают этот аспект.

Если у вас есть законная причина для получения и установки значения свойства динамически (другими словами, когда тип и / или имя свойства не могут быть определены в коде) Мне нужно использовать отражение.

Наиболее интересным способом было бы следующее:

object value = typeof(YourType).GetProperty("PropertyName").GetValue(yourInstance);
...
typeof(YourType).GetProperty("PropertyName").SetValue(yourInstance, "value");

Однако вы можете кэшировать объект PropertyInfo, чтобы сделать его более читаемым:

System.Reflection.PropertyInfo prop = typeof(YourType).GetProperty("PropertyName");

object value = prop.GetValue(yourInstance);
...
prop.SetValue(yourInstance, "value");
0
задан simgineer 17 January 2019 в 22:21
поделиться

1 ответ

Что вы делаете неправильно, так это то, что вы не запускаете цикл обработки событий Qt. то есть это неверно:

int main(int argc, char *argv[]) 
{
   MyUDP *myUDP = new MyUDP(0);
   myUDP->initSocket(port);

   while (true) {
       usleep(1000);
   }

   return 0;
}

... вместо этого у вас должно быть что-то вроде этого:

int main(int argc, char *argv[]) 
{
   QApplication app(argc, argv);

   // connect needs to occur after QCoreApplication declaration
   MyUDP *myUDP = new MyUDP(0);
   myUDP->initSocket(port);

   return app.exec();
}

... это внутри вызова app.exec(), где приложение Qt тратит большую часть своего времени (app.exec() не вернется, пока Qt не захочет выйти), и именно там Qt будет обрабатывать запросы ввода / вывода вашего UDP-сокета и потребности в сигнализации.

0
ответ дан simgineer 17 January 2019 в 22:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: