VK
Viktor KalesnikovJan. 8, 2022, 12:05 p.m.

Как получить ссылку на обьект присылающий сигнал через сигнал/слот?

Есть несколько потоков с объектами Worker
Указатели на объекты хранятся в QVector workers в классе Core;
Один из воркеров присылает сигнал emit в родительский класс Core изначально создающий потоки.
Вопрос: как получить ссылку или указатель на конкретный обьект Worker в слоте Core принимаюшем этот сигнал?

Когда-то давно у меня была эта функция связанная с метаобьектми Qt. Не могу найти или вспомнить.

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.
6
  • Jan. 8, 2022, 12:08 p.m.
  • The answer was marked as a solution.

.sender()?

VK

void Core::initThreads()
{
for (size_t i = 0; i < threadsCount; ++i)
{
QThread m_thread = new QThread();
m_thread->setEventDispatcher(new QEventDispatcherEpoll);
Worker
m_worker = new Worker(address, port, i, this);

    connect(m_thread, &QThread::finished, m_worker, &QObject::deleteLater);
    connect(m_thread, &QThread::finished, m_thread, &QObject::deleteLater);

    connect(m_worker, &Worker::login, this, &Core::onLogin);

    m_worker->moveToThread(m_thread);
    threads.push_back(m_thread);
    workers.push_back(m_worker);
    m_thread->start();
}
qDebug() << "InitThreadsTotal: " << threadsCount;

}

VK

В классе Core логины от подключившихся воркеров будут хранится в QHash hashLogin;

По итогу мне нужно получить в hashLogin пары логин и ссылка\указатель на конкретный обьект Worker приславший этот логин.

слот

void Core::onLogin(QString m_login)
{
hashLogin.insert(m_login, ???);
}

VK

Да, что то такое точно.

VK

нашел в одном из своих проектов.
PingClient *pClient = qobject_cast (sender());

Похоже это то самое :)

VK

Вот и ответ:
Спасибо Александру за подсказку.

void Core::onLogin(QString m_login)
{
Worker *m_worker = qobject_cast (sender());
hashLogin.insert(m_login, m_worker);
}

Comments

Only authorized users can post comments.
Please, Log in or Sign up
Fornex

Let me recommend you a great European Fornex hosting.

Fornex has proven itself to be a stable host over the years.

For Django projects I recommend VPS hosting

Following the link you will receive a 5% discount on shared hosting services, dedicated servers, VPS and VPN

View Hosting
MP

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:60points,
  • Rating points-1
SI

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:60points,
  • Rating points-1
k

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:90points,
  • Rating points8
Last comments
H

Python: How to Test Internet Speed

In behalf of cinephiles who submit self-referential scares, these 10 movies iron crucial spirits at the audience — and themselves. The “Bay” franchise returned to theaters this weekend wit…
H

Python: How to Test Internet Speed

There may be no animus franchise that opens with as dull-witted and satiating a ritual as Scream. As the shaping followers’s logo appears on wall, we rather enter upon hearing the ringing of a l…
A
  • Andrew
  • Jan. 12, 2022, 11:41 a.m.

Qt/C++ - Lesson 038. Switching between windows in the Qt

Здравствуйте, а как сделать чтобы второе и третье окно не сохраняли свои параметры а создавались заного? Только начинаю изучать прогграмирование и пишу протенькую игру сделал 2 окна, одно с меню…
j
  • juvf
  • Dec. 28, 2021, 11:56 p.m.

Deploying Qt and QML Applications on Linux and Windows

написал приложение, холоворд на qt виджетах, без qml. Из визарда QtCreator. Собрал кросскомпилятором. Нужно перенести на таргет. juvf@juvf-VirtualBox:~/qtWs/test/imx6/release$ ~/CQtDeploye…
AO

Qt/C++ - Lesson 023. Moving QGraphicsItem on QGraphicsScene with mouse help

А есть возможность передавать координаты классу, что-бы он рисвал, допустим линию?
Now discuss on the forum
MS

Октуда берется user?

Я все понял, спасибо большое за помощь)
AB

Sorting the added QML elements in the ListModel

I am writing an alarm clock in QML, I am required to sort the alarms in ascending order (depending on the date or time (if there are several alarms on the same day). I've done the sorting …
VK

Как получить ссылку на обьект присылающий сигнал через сигнал/слот?

Вот и ответ: Спасибо Александру за подсказку. void Core::onLogin(QString m_login) { Worker *m_worker = qobject_cast (sender()); hashLogin.insert(m_login, m_wor…
v

подтвердить значение в SpinBox

Мне необходимо подтвердить значение в SpinBox нажатием клавиши Enter и перевести фокус на другое поле. self.doubleSpinBox.returnPressed.co nnect(self.pressedKeys) def pressedKeys(sel…

Сортировка по дате и времени QSortFilterProxyModel QSqlRelationalTableModel

Добрый день. Наследуйте модель сортировки от QSortFilterProxyModel и переопределите метод QSortFilterProxyModel::lessThan таким образом, чтобы вы забирали через индексы дату и в…
About
Services
© EVILEG 2015-2021
Recommend hosting TIMEWEB