일반 qt디자이너에서 버튼을 누르면 새로운 프로그램이 실행되도록...
2009.10.09 00:53
qt gui 왕초보입니다.
실행프로그램들은 /root에 컴파일이 완료되어 실행파일자체로 있습니다.
각각은 #] ./imageviewer 이와같이 실행이 되는데요
대표gui를 만들어서 버튼을 누르면 원하는 프로그램이 실행 되도록 하고 싶습니다.
예를들어 메인 gui에서
imageview버튼을 누르면 /root/imageview라는 프로그램이 실행되도록 하고 싶은데
어떻게 하면 되는지 알려주세요.
댓글 4
-
고도푸
2009.10.09 22:43
-
QtheKan
2009.10.12 23:13
컴파일시 다음부분에서 에러가 나는데요
ImageViewer.WaitForFinished( -1 ) ;
에러 내용은 다음과 같습니다.
[root@kut Page-Ex]# make
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/qt4/qt-x11/mkspecs/linux-g++ -I. -I/qt4/qt-x11/include/QtCore -I/qt4/qt-x11/include/QtCore -I/qt4/qt-x11/include/QtGui -I/qt4/qt-x11/include/QtGui -I/qt4/qt-x11/include -I. -I. -I. -o page_ex.o page_ex.cpp
page_ex.cpp: In member function ‘void Page_Ex::slot_page03_Show()’:
page_ex.cpp:59: error: ‘class QProcess’ has no member named ‘WaitForFinished’
make: *** [page_ex.o] 오류 1위의 문장을 주석처리하고 하면 컴파일이 잘되 응용프로그램도 실행되는데
버튼을 누르면 다음과 shell에서 다음과 같은 메시지만 뜨고 응용프로그램은 실행이 안되요
QProcess: Destroyed while process is still running.
어떻게 해결하나요?
korone에서 받아온 메인창에서 다른위젯을 여는 예제 프로그램인데요
여기에 page3을 imageviewer를 실행하도록 해보았습니다.
-
QtheKan
2009.10.13 00:03
qprocess.h 를 찾아보니
waitForFinished()함수에서 W가 아니라 w네요 ㅎ
알려주신 소스에서 대문자W를 소문자w로 고치니 잘됩니다.
답변 감사합니다.^^
-
고도푸
2009.10.13 20:38
ㅋㅋㅋ 역시나 오타가... ^^
부족한 내공 탓입니다.. ㅠ.ㅠ
잘 된다니 다행이네요..^^




QProcess를 이용해 보세요..
예를 들어서
님이 만들고 싶어 하시는 버튼의 슬롯 함수가
slotfunc()이라고 할께요..
void xxx(님 Class명)::slotfunc() // 요렇게 만들어 지겠죠??
{
QProcess ImageViewer ;
QString ExecuteInstruction ; // 실행 명령문이죠.. ㅋㅋ
ExecuteInstruction = "./ImageViewer -qws" ; // 실행 시키실 문장이죠??
ImageViewer.start( ExecuteInstruction ) ; // 위에서 정의한 QProcess를 실행 시킵니다..
ImageViewer.WaitForFinished( -1 ) ; // 해당 프로세스가 시간 만큼 실행 되도록 기다려 준다는 의미인데..
// -1을 넣으면.. 해당 프로세스가 종료 될 때 까지 기다립니다..
}
요렇게 하시면.. 실행 시키실 수 있을 꺼에요.. ㅋㅋ
P.S : 오타가 있을 수 있으니..안된다면.. 댓글을..ㅋㅋ
수고하세요..