QWaitDialog dlg("wait,please");//Сфантазированный классwhile(действите.isEnd()){if(dlg.isCanceled()){breack;}//Че-то делаем}
#include <qcanvas.h>#include <qtimer.h>#include <qrect.h>//QCanvas *canvas;QTimer *timer;int frm_x;int frm_y;//QRect *rect;void ProgressForm::init(){ int pw_mid=parentWidget()->width()/2; int ph_mid=parentWidget()->height()/2; int w_mid=width()/2; int h_mid=height()/2; setGeometry ( pw_mid-w_mid, ph_mid-h_mid, width(), height() ); QRect rect1 (frmProcess->frameRect()); frm_x=rect1.x(); frm_y=rect1.y(); timer = new QTimer( this); connect( timer, SIGNAL(timeout()), SLOT(paintProcess()) ); //timer->start( 100, false ); setFixedSize(size()); btnCancel->hide(); textLabel1->hide(); }void ProgressForm::paintProcess(){ QRect canvas_rect (frmCanvas->frameRect()); int canvas_right=canvas_rect.right(); if(frm_x>=canvas_right) { frm_x=canvas_rect.x(); } else frm_x=frm_x+5; frmProcess->move(frm_x, frm_y); frmProcess->repaint();}void ProgressForm::btnCancel_clicked(){ emit killProcess(); //reject();}void ProgressForm::setText( QString text ){ lblProcess->setText(text);}void ProgressForm::hideForm(){ timer->stop(); hide();}void ProgressForm::showForm(){ timer->start( 100, false ); show();}
<!DOCTYPE UI><UI version="3.1" stdsetdef="1"><class>ProgressForm</class><widget class="QDialog"> <property name="name"> <cstring>ProgressForm</cstring> </property> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>468</width> <height>135</height> </rect> </property> <property name="backgroundOrigin"> <enum>WidgetOrigin</enum> </property> <property name="caption"> <string>Progress...</string> </property> <property name="modal" stdset="0"> <bool>true</bool> </property> <grid> <property name="name"> <cstring>unnamed</cstring> </property> <widget class="QLayoutWidget" row="0" column="0"> <property name="name"> <cstring>layout4</cstring> </property> <vbox> <property name="name"> <cstring>unnamed</cstring> </property> <widget class="QLabel"> <property name="name"> <cstring>lblProcess</cstring> </property> <property name="text"> <string><type of the process></string> </property> <property name="alignment"> <set>WordBreak|AlignVCenter</set> </property> </widget> <widget class="QFrame"> <property name="name"> <cstring>frmCanvas</cstring> </property> <property name="sizePolicy"> <sizepolicy> <hsizetype>1</hsizetype> <vsizetype>0</vsizetype> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="minimumSize"> <size> <width>100</width> <height>20</height> </size> </property> <property name="paletteForegroundColor"> <color> <red>81</red> <green>89</green> <blue>125</blue> </color> </property> <property name="frameShape"> <enum>GroupBoxPanel</enum> </property> <property name="frameShadow"> <enum>Plain</enum> </property> <property name="lineWidth"> <number>1</number> </property> <widget class="QFrame"> <property name="name"> <cstring>frmProcess</cstring> </property> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>60</width> <height>20</height> </rect> </property> <property name="sizePolicy"> <sizepolicy> <hsizetype>0</hsizetype> <vsizetype>0</vsizetype> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> <property name="minimumSize"> <size> <width>30</width> <height>20</height> </size> </property> <property name="paletteForegroundColor"> <color> <red>0</red> <green>0</green> <blue>0</blue> </color> </property> <property name="paletteBackgroundColor"> <color> <red>165</red> <green>180</green> <blue>255</blue> </color> </property> <property name="palette"> <palette> <active> <color> <red>0</red> <green>0</green> <blue>0</blue> </color> <color> <red>129</red> <green>140</green> <blue>199</blue> </color> <color> <red>208</red> <green>215</green> <blue>255</blue> </color> <color> <red>168</red> <green>177</green> <blue>227</blue> </color> <color> <red>64</red> <green>69</green> <blue>99</blue> </color> <color> <red>85</red> <green>92</green> <blue>132</blue> </color> <color> <red>0</red> <green>0</green> <blue>0</blue> </color> <color> <red>255</red> <green>255</green> <blue>255</blue> </color> <color> <red>0</red> <green>0</green> <blue>0</blue> </color> <color> <red>255</red> <green>255</green> <blue>255</blue> </color> <color> <red>165</red> <green>180</green> <blue>255</blue> </color> <color> <red>0</red> <green>0</green> <blue>0</blue> </color> <color> <red>0</red> <green>0</green> <blue>128</blue> </color> <color> <red>255</red> <green>255</green> <blue>255</blue> </color> <color> <red>0</red> <green>0</green> <blue>0</blue> </color> <color> <red>0</red> <green>0</green> <blue>0</blue> </color> </active> <disabled> <color> <red>128</red> <green>128</green> <blue>128</blue> </color> <color> <red>129</red> <green>140</green> <blue>199</blue> </color> <color> <red>208</red> <green>215</green> <blue>255</blue> </color> <color> <red>148</red> <green>160</green> <blue>228</blue> </color> <color> <red>64</red> <green>69</green> <blue>99</blue> </color> <color> <red>85</red> <green>92</green> <blue>132</blue> </color> <color> <red>128</red> <green>128</green> <blue>128</blue> </color> <color> <red>255</red> <green>255</green> <blue>255</blue> </color> <color> <red>128</red> <green>128</green> <blue>128</blue> </color> <color> <red>255</red> <green>255</green> <blue>255</blue> </color> <color> <red>165</red> <green>180</green> <blue>255</blue> </color> <color> <red>0</red> <green>0</green> <blue>0</blue> </color> <color> <red>0</red> <green>0</green> <blue>128</blue> </color> <color> <red>255</red> <green>255</green> <blue>255</blue> </color> <color> <red>0</red> <green>0</green> <blue>192</blue> </color> <color> <red>128</red> <green>0</green> <blue>128</blue> </color> </disabled> <inactive> <color> <red>0</red> <green>0</green> <blue>0</blue> </color> <color> <red>129</red> <green>140</green> <blue>199</blue> </color> <color> <red>208</red> <green>215</green> <blue>255</blue> </color> <color> <red>148</red> <green>160</green> <blue>228</blue> </color> <color> <red>64</red> <green>69</green> <blue>99</blue> </color> <color> <red>85</red> <green>92</green> <blue>132</blue> </color> <color> <red>0</red> <green>0</green> <blue>0</blue> </color> <color> <red>255</red> <green>255</green> <blue>255</blue> </color> <color> <red>0</red> <green>0</green> <blue>0</blue> </color> <color> <red>255</red> <green>255</green> <blue>255</blue> </color> <color> <red>165</red> <green>180</green> <blue>255</blue> </color> <color> <red>0</red> <green>0</green> <blue>0</blue> </color> <color> <red>0</red> <green>0</green> <blue>128</blue> </color> <color> <red>255</red> <green>255</green> <blue>255</blue> </color> <color> <red>0</red> <green>0</green> <blue>192</blue> </color> <color> <red>128</red> <green>0</green> <blue>128</blue> </color> </inactive> </palette> </property> <property name="frameShape"> <enum>StyledPanel</enum> </property> <property name="frameShadow"> <enum>Raised</enum> </property> <property name="lineWidth"> <number>4</number> </property> <property name="margin"> <number>0</number> </property> <property name="midLineWidth"> <number>2</number> </property> </widget> </widget> <widget class="QLabel"> <property name="name"> <cstring>textLabel1</cstring> </property> <property name="text"> <string><font size="-1"><b>Note:</b> killing the process may cause the unexpected results</font></string> </property> </widget> <widget class="QLayoutWidget"> <property name="name"> <cstring>layout65</cstring> </property> <hbox> <property name="name"> <cstring>unnamed</cstring> </property> <spacer> <property name="name"> <cstring>spacer26</cstring> </property> <property name="orientation"> <enum>Horizontal</enum> </property> <property name="sizeType"> <enum>Expanding</enum> </property> <property name="sizeHint"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> <widget class="QPushButton"> <property name="name"> <cstring>btnCancel</cstring> </property> <property name="text"> <string>Kill process</string> </property> <property name="iconSet"> <iconset></iconset> </property> </widget> <spacer> <property name="name"> <cstring>spacer27</cstring> </property> <property name="orientation"> <enum>Horizontal</enum> </property> <property name="sizeType"> <enum>Expanding</enum> </property> <property name="sizeHint"> <size> <width>40</width> <height>20</height> </size> </property> </spacer> </hbox> </widget> </vbox> </widget> </grid></widget><connections> <connection> <sender>btnCancel</sender> <signal>clicked()</signal> <receiver>ProgressForm</receiver> <slot>btnCancel_clicked()</slot> </connection></connections><includes> <include location="local" impldecl="in implementation">ProgressForm.ui.h</include></includes><signals> <signal>killProcess()</signal></signals><slots> <slot>paintProcess()</slot> <slot>btnCancel_clicked()</slot> <slot>hideForm()</slot> <slot>showForm()</slot></slots><functions> <function access="private" specifier="non virtual">init()</function> <function>setText( QString text )</function></functions><pixmapinproject/><layoutdefaults spacing="6" margin="11"/></UI>