cuốn sách gpt4 ai đã làm

Gỡ lỗi các khe Qt chưa được gọi

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 13:55:39 27 4
mua khóa gpt4 Nike

Tôi đã lãng phí hàng giờ để cố gắng tìm ra lỗi này và tôi vẫn không biết tại sao nó lại xảy ra... vì vậy tôi nhờ bạn giúp đỡ!

Tôi di chuyển một đối tượng vào một luồng để thực hiện một số công việc và khi hoàn thành sẽ phát ra tín hiệu cho QChínhCửa sổ chiếm lấy. Đơn giản vậy thôi, slot trong cửa sổ của tôi không chạy. Tuy nhiên, nếu tôi kết nối chính xác tín hiệu đó với qApp, thì nó hợp lệ:

connect(objInThread_, SIGNAL(mySignal()), this, SLOT(about())); // Không có gì xảy ra

connect(objInThread_, SIGNAL(mySignal()), qApp, SLOT(aboutQt())); // Vui quá!

Lưu ý rằng tôi thực sựSao chép và dánMã cho đối tượng luồng này đến từ một luồng khác dựa trên QChủ đề đối tượng, vì tôi có nhiều đối tượng như vậy và mọi vị trí đều được gọi... ngoại trừcái này.

Tôi có thể làm gì để gỡ lỗi nó?

Dưới đây là tuyên bố về các vị trí quan trọng:

lớp mainwin : QMainWindow công khai
{
Q_ĐỐI TƯỢNG

public:

mainwin(QWidget *parent = 0, Qt::WindowFlags flags = 0);

void setupThread()
{
// Chủ đề
objThread_ = QThread mới(cái này);
objThread_->start();

// Đối tượng trong thread
objInThread_ = myObject mới();
objInThread_->moveToThread(objThread_);

// Kết nối
connect(objInThread_, SIGNAL(mySignal()), this, SLOT(about()));
}

// ...

khe công cộng:

void tảiSettings();

vô hiệu về();

// ...
}

Về Slot này đơn giản như sau:

void mainwin::about()
{
qCảnh báo("GIỚI THIỆU");
}

Các chức năng của đối tượng luồng như sau:

void myObject::fire()
{
qWarning("đây là luồng");

phát ra mySignal();
}

câu trả lời hay nhất

Bạn có chắc chắn EventLoop của chuỗi thực thi chức năng vị trí đang chạy không? Để xử lý các chức năng của vị trí, EventLoop tương ứng phải được chạy thông qua hàm exec(...)(- ít nhất tôi nghĩ nó được gọi là exec).

Giải thích thêm: Mỗi Q_OBJECT thuộc về một chuỗi. Điều này có thể được thay đổi thông qua hàm moveToThread(). Vòng lặp sự kiện của luồng tương ứng phải đang chạy để xử lý chức năng vị trí.

EDIT: Tôi đoán là chuỗi của bạn (chuỗi bạn đã tạo) không thực hiện vòng lặp sự kiện.

Về C++ - gỡ lỗi các khe Qt chưa được xử lý, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/21603926/

27 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress