Ответы пользователя по тегу C++
  • Чем можно заменить циклы ожидания ответа в Qt?

    Если у Вас signalGET и slotGET подключены через DirectConnection, и в слоте slotGET нет асинхронных операций, то никакие циклы ожидания не нужны. Контекст выполнения после вызова signalGET пойдёт в методе дальше только после завершения работы внутри signalGET.

    В ином случае, можно воспользоваться различными подходами. Например, с QEventLoop код может выглядеть так:
    int k;
    int getNumber(void) {
       emit signalGET();
    
       QEventLoop event_loop;
       connect(this, SIGNAL(done()), &event_loop, SLOT(quit()));
       event_loop.exec();
    
       return k;
    }
    
    slotGET
    {
    k = /*что-то там*/; 
    emit done;
    }
    Ответ написан
    Комментировать
  • Как добавить кнопку в item QListView?

    QListView наследуется от QAbstractItemView, а у последнего имеется возможность устанавливать делегаты для кастомных ячеек:
    // Для всех ячеек.
    void setItemDelegate(QAbstractItemDelegate * delegate)
    // Для колонки.
    void setItemDelegateForColumn(int column, QAbstractItemDelegate * delegate)
    // Для строки.
    void setItemDelegateForRow(int row, QAbstractItemDelegate * delegate)

    Пример использования QAbstractItemDelegate можно посмотреть в документации.
    Ответ написан
    3 комментария