QDialog를 주 윈도우로 사용하는 응용 프로그램을 작성하고 있습니다. 이 응용 프로그램에서 나는 3 개의 QGroupBox, 하나는 여러 버튼, 하나는 GLWidget (캡처 및 OpenCV를 사용하여 처리 및 OpenGL과 함께 표시) GLWidget와 함께, 그리고 세 번째 하나는 Phonon을 사용하여 다른 비디오를 재생하려고했는데 (기본적으로 이 문제는 내 문제와 관련이 없지만 QComboBox를 사용하여 비디오를 선택하려고합니다.)QDialog의 Phonon :: VideoWidget 문제
GUI가 초기화되어 필요한 모든 작업을 수행합니다 ... VideoWidget 객체를 만들려고 할 때까지.
GUIT::GUIT(QWidget *parent, Qt::WFlags flags)
{
// Initialization of the different QGroupBox
createVideo();
createButtons();
createScoreFE();
createPhonon();
gbScoreFE->hide();
QHBoxLayout *layout = new QHBoxLayout;
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(gbVideo, 0, 0);
mainLayout->addWidget(gbButtons, 1, 0);
mainLayout->addWidget(gbScoreFE, 0, 0);
layout->addLayout(mainLayout);
layout->addWidget(gbPhonon);
gbPhonon->hide();
this->setLayout(layout);
layout->setSizeConstraint(QLayout::SetFixedSize);
}
하고 충돌 방법 : 이것은 내 클래스의 코드
void GUIT::createPhonon()
{
gbPhonon = new QGroupBox(tr("Test"));
// This line makes the program to stop executing.
Phonon::VideoWidget *_player_video = new Phonon::VideoWidget;
QVBoxLayout *layout = new QVBoxLayout;
gbPhonon->setLayout(layout);
}
은 어떻게 충돌 않는다? 새 VideoWidget을 만든 후에 여러 스레드가 종료됩니다. 그냥 다음과 같이 보입니다 :
The thread 'Win32 Thread' (0x12e8) has exited with code 1 (0x1).
The thread 'Win32 Thread' (0x1304) has exited with code 1 (0x1).
The thread 'Win32 Thread' (0xf20) has exited with code 1 (0x1).
The thread 'Win32 Thread' (0xdec) has exited with code 1 (0x1).
The thread 'QThread' (0x1e20) has exited with code 1 (0x1).
The thread 'Win32 Thread' (0x19b0) has exited with code 1 (0x1).
The thread 'Win32 Thread' (0x1f58) has exited with code 1 (0x1).
The thread 'Win32 Thread' (0x1794) has exited with code 1 (0x1).
진실은이 문제에 대해 조금 혼란스러워합니다. 그것은 내가 그 구성 요소로 VideoWidget을 생성 할 QWidget을 작성하는 동안 발생합니다 ... 다른 Phonon 클래스를 검사했고 GUI가 초기화 될 때 영향을받지 않습니다. 예 :
Phonon::MediaObject *mediaObject = new Phonon::MediaObject(this);
는 또한 간단한 GUI로 문제를 재현하는 시도, 그것은 컴파일하고 문제없이 작동하므로 포논과 충돌 무언가가 있어야한다. 나는 그것이 GLWidget이 될 수 있다고 생각했지만 GUI의이 부분을 연결 해제했다 ... 그리고 그것은 여전히 스레드를 죽인다.
누군가 비슷한 문제가 발생 했습니까? 누군가가 잘못 될 수 있거나 스레드가 죽는 것을 확인하는 방법에 대한 통찰력이 있습니까?
포논 경로를 만들었습니까? –
안녕 카밀, 안돼. 내가 줄을 포함 할 때 : Phonon :: VideoWidget * _player_video = new Phonon :: VideoWidget; 이 줄 바로 뒤에 모든 QT 스레드가 코드 1로 종료됩니다. 추신 : Phonon :: createPath 메서드에 대해 이야기하고 있다고 가정 해 보겠습니다. – sergi