void JumpToDialog::checkValidity(void) { QValidator::State state = QValidator::Acceptable; int i; const QValidator *vldr = cbFunctions->validator(); QString s = cbFunctions->currentText(); int pos = 0; if (vldr->validate(s, pos) != QValidator::Acceptable) { state = QValidator::Invalid; } /* Find OK button */ QAbstractButton *okButton = NULL; QList<QAbstractButton*> buttonList; buttonList = buttonBox->buttons(); for (i = 0; i < buttonList.size(); i++) { if (buttonBox->buttonRole(buttonList[i]) == QDialogButtonBox::AcceptRole) { okButton = buttonList[i]; } } if (!okButton) { return; } if (state == QValidator::Acceptable) { okButton->setEnabled(true); } else { okButton->setEnabled(false); } }
void PluginsInstallPage::initializePage() { setTitle( tr( "Your plugins are now being installed" ) ); wizard()->setCommitPage( true ); QAbstractButton* continueButton = wizard()->setButton( FirstRunWizard::NextButton, tr( "Continue" ) ); if ( wizard()->canGoBack() ) wizard()->setButton( FirstRunWizard::BackButton, tr( "<< Back" ) ); #ifdef Q_OS_WIN32 if ( wizard()->pluginList()->installList().count() > 0 ) { // get the install to happen a bit later so that // we actually show this page of the wizard // and the user has time to read what's happening QTimer::singleShot( 1000, this, SLOT(install()) ); continueButton->setEnabled( false ); } else { continueButton->click(); } #endif }
void TaskDatumParameters::updateRefButton(int idx) { QAbstractButton* b; switch(idx){ case 0: b = ui->buttonRef1; break; case 1: b = ui->buttonRef2; break; case 2: b = ui->buttonRef3; break; case 3: b = ui->buttonRef4; break; default: throw Base::Exception("button index out of range"); } Part::Datum* pcDatum = static_cast<Part::Datum*>(DatumView->getObject()); std::vector<App::DocumentObject*> refs = pcDatum->Support.getValues(); int numrefs = refs.size(); bool enable = true; if (idx > numrefs) enable = false; if (idx == numrefs && this->lastSuggestResult.nextRefTypeHint.size() == 0) enable = false; b->setEnabled(enable); b->setChecked(iActiveRef == idx); if (iActiveRef == idx) { b->setText(tr("Selecting...")); } else if (idx < static_cast<int>(this->lastSuggestResult.references_Types.size())){ b->setText(AttacherGui::getShapeTypeText(this->lastSuggestResult.references_Types[idx])); } else { b->setText(tr("Reference%1").arg(idx+1)); } }
PreferencesDialog::PreferencesDialog( QMenuBar* menuBar, QWidget* parent ) :unicorn::MainWindow( menuBar, parent ), ui( new Ui::PreferencesDialog ) { // Disable the minimize and maximize buttons. Qt::WindowFlags flags = this->windowFlags(); flags &= ~Qt::WindowMinMaxButtonsHint; setWindowFlags(flags); ui->setupUi( this ); setAttribute( Qt::WA_DeleteOnClose, true ); static_cast<QAbstractButton*>( ui->toolBar->widgetForAction( ui->actionGeneral ) )->setAutoExclusive( true ); static_cast<QAbstractButton*>( ui->toolBar->widgetForAction( ui->actionScrobbling ) )->setAutoExclusive( true ); static_cast<QAbstractButton*>( ui->toolBar->widgetForAction( ui->actionDevices ) )->setAutoExclusive( true ); static_cast<QAbstractButton*>( ui->toolBar->widgetForAction( ui->actionAccounts ) )->setAutoExclusive( true ); static_cast<QAbstractButton*>( ui->toolBar->widgetForAction( ui->actionAdvanced ) )->setAutoExclusive( true ); connect( ui->toolBar->widgetForAction( ui->actionGeneral ), SIGNAL(toggled(bool)), ui->actionGeneral, SLOT(setChecked(bool)) ); connect( ui->toolBar->widgetForAction( ui->actionScrobbling ), SIGNAL(toggled(bool)), ui->actionScrobbling, SLOT(setChecked(bool)) ); connect( ui->toolBar->widgetForAction( ui->actionDevices ), SIGNAL(toggled(bool)), ui->actionDevices, SLOT(setChecked(bool)) ); connect( ui->toolBar->widgetForAction( ui->actionAccounts ), SIGNAL(toggled(bool)), ui->actionAccounts, SLOT(setChecked(bool)) ); connect( ui->toolBar->widgetForAction( ui->actionAdvanced ), SIGNAL(toggled(bool)), ui->actionAdvanced, SLOT(setChecked(bool)) ); connect( this, SIGNAL( saveNeeded() ), ui->general, SLOT( saveSettings() ) ); connect( this, SIGNAL( saveNeeded() ), ui->scrobbling, SLOT( saveSettings() ) ); connect( this, SIGNAL( saveNeeded() ), ui->ipod, SLOT( saveSettings() ) ); connect( this, SIGNAL( saveNeeded() ), ui->accounts, SLOT( saveSettings() ) ); connect( this, SIGNAL( saveNeeded() ), ui->advanced, SLOT( saveSettings() ) ); connect( ui->general, SIGNAL( settingsChanged() ), SLOT( onSettingsChanged() ) ); connect( ui->scrobbling, SIGNAL( settingsChanged() ), SLOT( onSettingsChanged() ) ); connect( ui->ipod, SIGNAL( settingsChanged() ), SLOT( onSettingsChanged() ) ); connect( ui->accounts, SIGNAL( settingsChanged() ), SLOT( onSettingsChanged() ) ); connect( ui->advanced, SIGNAL( settingsChanged() ), SLOT( onSettingsChanged() ) ); connect( ui->actionGeneral, SIGNAL(triggered()), SLOT(onTabButtonClicked())); connect( ui->actionScrobbling, SIGNAL(triggered()), SLOT(onTabButtonClicked())); connect( ui->actionDevices, SIGNAL(triggered()), SLOT(onTabButtonClicked())); connect( ui->actionAccounts, SIGNAL(triggered()), SLOT(onTabButtonClicked())); connect( ui->actionAdvanced, SIGNAL(triggered()), SLOT(onTabButtonClicked())); connect( ui->stackedWidget, SIGNAL(currentChanged(int)), this, SLOT(onStackCurrentChanged(int)), Qt::QueuedConnection ); #ifdef Q_OS_MAC ui->buttonBox->hide(); #endif connect( ui->buttonBox, SIGNAL( accepted() ), SLOT( onAccepted() ) ); connect( ui->buttonBox, SIGNAL( rejected() ), SLOT( onRejected() ) ); QAbstractButton* applyButton = ui->buttonBox->button( QDialogButtonBox::Apply ); applyButton->setEnabled( false ); connect( applyButton, SIGNAL( clicked() ), SLOT( onApplyButtonClicked() ) ); setFixedWidth( 550 ); ui->stackedWidget->setCurrentWidget( ui->accounts ); ui->actionGeneral->trigger(); }
bool wxRadioBox::Enable(unsigned int n, bool enable) { QAbstractButton *qtButton = GetButtonAt( m_qtButtonGroup, n ); CHECK_BUTTON( qtButton, false ); qtButton->setEnabled( enable ); return true; }
void ExportWizard::xmlWorkFinish() { QAbstractButton *finishButton = button(QWizard::FinishButton); finishButton->setEnabled(true); setButtonText(QWizard::FinishButton, tr("Finish")); setOption(QWizard::DisabledBackButtonOnLastPage, false); delete xmlWorkThread; }
void EditCallDialog::checkValidity(void) { QValidator::State state = QValidator::Acceptable; int i; for (i=0; i<m_qObjects.size(); i++) { const FunctionCall::Argument *arg = m_pChangedCall->getArgument(i); switch (arg->iType) { case DBG_TYPE_ENUM: { QComboBox *cb = (QComboBox*)m_qObjects[i]; const QValidator *vldr = cb->validator(); QString s = cb->currentText(); int pos = 0; if (vldr->validate(s, pos) != QValidator::Acceptable) { state = QValidator::Invalid; } break; } default: break; } } /* Find OK button */ QAbstractButton *okButton = NULL; QList<QAbstractButton*> buttonList; buttonList = buttonBox->buttons(); for(i=0; i<buttonList.size(); i++) { if (buttonBox->buttonRole(buttonList[i]) == QDialogButtonBox::AcceptRole) { okButton = buttonList[i]; } } if (!okButton) { return; } if (state == QValidator::Acceptable) { okButton->setEnabled(true); } else { okButton->setEnabled(false); } }
void ExportWizard::excelWorkFinish() { QAbstractButton *finishButton = button(QWizard::FinishButton); finishButton->setEnabled(true); setButtonText(QWizard::FinishButton, tr("Finish")); setOption(QWizard::DisabledBackButtonOnLastPage, false); QSqlDatabase::removeDatabase("ExportExcel"); delete excelWorkThread; }
bool LoadObjectsProgressPage::validatePage() { // Re-Enable cancel button for the next step QAbstractButton* cancel = wizard()->button(QWizard::CancelButton); if(cancel) { cancel->setEnabled(true); } return true; }
void ExportWizard::workFinish() { QAbstractButton *finishButton = button(QWizard::FinishButton); finishButton->setEnabled(true); setButtonText(QWizard::FinishButton, tr("Finish")); setOption(QWizard::DisabledBackButtonOnLastPage, false); // progressPage->progressBar->setMaximum(1); delete workThread; QSqlDatabase::removeDatabase("QODBCTempConnect"); }
void StartPage::handle_selectionChanged() { QItemSelectionModel * sel_model = qobject_cast<QItemSelectionModel *>(sender()); Q_ASSERT(sel_model); QAbstractItemView * area = area_of(sel_model->model()); Q_ASSERT(area); QString button_name = area->property("open_button_name").toString(); QAbstractButton * button = findChild<QAbstractButton *>(button_name); Q_ASSERT(button); button->setEnabled( area->currentIndex().isValid() ); }
/** * @brief the current tab changed */ void OpenNIC::tabChanged(int tab) { QDialogButtonBox* buttonBox = ui->buttonBox; QList<QAbstractButton *> buttons = buttonBox->buttons(); for(int n=0; n < buttons.count(); n++) { QAbstractButton* button = buttons.at(n); if (buttonBox->buttonRole(button) == QDialogButtonBox::ApplyRole || buttonBox->buttonRole(button) == QDialogButtonBox::AcceptRole) { if ( tab == 1 || tab == 5 ) { button->setEnabled(true); } else { button->setEnabled(false); } } } }
void PluginsInstallPage::install() { #ifdef Q_OS_WIN32 foreach( IPluginInfo* plugin, wizard()->pluginList()->installList() ) plugin->doInstall(); #endif QAbstractButton* continueButton = wizard()->setButton( FirstRunWizard::NextButton, tr( "Continue" ) ); continueButton->setEnabled( true ); QTimer::singleShot( 1000, continueButton, SLOT(click()) ); }
void TicTacToe::on_buttonNewGame_clicked() { QListIterator<QAbstractButton *> i(gameField->buttons()); while (i.hasNext()) { QAbstractButton *qab = i.next(); qab->setEnabled(true); qab->setIcon(QIcon()); qab->setWhatsThis(""); } buttonNewGame->setEnabled(false); switchPlayer(); }
void PsdSettingsPopup::onModeChanged(const QString &mode) { if (mode == "Single Image") { m_mode = FLAT; m_modeDescription->setText(modesDescription[0]); m_createSubXSheet->setEnabled(false); m_levelNameType->setEnabled(false); QList<QAbstractButton *> buttons = m_psdFolderOptions->buttons(); while (!buttons.isEmpty()) { QAbstractButton *btn = buttons.takeFirst(); btn->setEnabled(false); } } else if (mode == "Frames") { m_mode = FRAMES; m_modeDescription->setText(modesDescription[1]); m_createSubXSheet->setEnabled(false); m_levelNameType->setEnabled(false); QList<QAbstractButton *> buttons = m_psdFolderOptions->buttons(); while (!buttons.isEmpty()) { QAbstractButton *btn = buttons.takeFirst(); btn->setEnabled(false); } } else if (mode == "Columns") { if (m_psdFolderOptions->checkedId() == 2 || m_psdFolderOptions->checkedId() == 1) m_mode = FOLDER; else m_mode = COLUMNS; m_modeDescription->setText(modesDescription[2]); m_createSubXSheet->setEnabled(true); m_levelNameType->setEnabled(true); QList<QAbstractButton *> buttons = m_psdFolderOptions->buttons(); while (!buttons.isEmpty()) { QAbstractButton *btn = buttons.takeFirst(); btn->setEnabled(true); } } else { assert(false); } }
void EmailAccountWizardAccountPage::enableButtons() { EmailAccountWizard* w = static_cast<EmailAccountWizard*>(wizard()); Q_ASSERT(w); if (!w) return; QAbstractButton* nextButton = w->button(QWizard::NextButton); Q_ASSERT(nextButton); if (!nextButton) return; nextButton->setEnabled(true); }
void TicTacToe::on_gameField_buttonClicked(QAbstractButton *button) { switch(_currPlayer) { case 1: button->setIcon(QPixmap::fromImage(*_player1)); button->setWhatsThis("1"); break; case 2: button->setIcon(QPixmap::fromImage(*_player2)); button->setWhatsThis("2"); break; } button->setEnabled(false); bool won = checkWin(); if(won || full()) { if(won) { QListIterator<QAbstractButton *> i(gameField->buttons()); while (i.hasNext()) { QAbstractButton *qab = i.next(); qab->setEnabled(false); } switch(_currPlayer) { case 1: scorePlayer1->setText(QString::number(++_score1)); printInfo("Player 1 wins!"); break; case 2: scorePlayer2->setText(QString::number(++_score2)); printInfo("Player 2 wins!"); break; } } turnPlayer1->setText(""); turnPlayer2->setText(""); buttonNewGame->setEnabled(true); } else { switchPlayer(); } }
void GetObjectsProgressPage::initializePage() { // Disable cancel button for this step QAbstractButton* cancel = wizard()->button(QWizard::CancelButton); if(cancel) { cancel->setEnabled(false); } // Creating searching tasklet ThreeDSSearchingTasklet* tasklet = new ThreeDSSearchingTasklet(); ((FileImporterWizard*)wizard())->setContext(tasklet); connect(tasklet, SIGNAL(ended(kint)), SLOT(ended(kint))); connect(tasklet, SIGNAL(progress(const QString&)), SLOT(progress(const QString&))); connect(tasklet, SIGNAL(progress(kuint64,kuint64)), SLOT(progress(kuint64,kuint64))); // Running searching tasklet _ended = Tasklet::NotStarted; tasklet->setFile(((FileImporterWizard*)wizard())->file()); KoreEngine::RunTasklet(tasklet, TaskletRunner::Asynchronous); emit completeChanged(); }
void LoadObjectsProgressPage::initializePage() { // Disable cancel button for this step QAbstractButton* cancel = wizard()->button(QWizard::CancelButton); if(cancel) { cancel->setEnabled(false); } // Check if a searching tasklet is still created ThreeDSSearchingTasklet* searchingTasklet = (ThreeDSSearchingTasklet*)((FileImporterWizard*)wizard())->context(); if(searchingTasklet) { // Check if we have some objects to import const QList<ThreeDSContext*> listObjects = searchingTasklet->objects(); if(listObjects.size() > 0) { // Run import tasklet _ended = Tasklet::NotStarted; K_ASSERT( PantinEngine::ActiveManager()->rootInstance()->fastInherits<Project>() ) // It has to be a Project ! _tasklet = new ThreeDSImportTasklet(((FileImporterWizard*)wizard())->file(), searchingTasklet); connect(_tasklet, SIGNAL(ended(kint)), SLOT(ended(kint))); connect(_tasklet, SIGNAL(progress(const QString&)), SLOT(progress(const QString&))); connect(_tasklet, SIGNAL(progress(kuint64,kuint64)), SLOT(progress(kuint64,kuint64))); KoreEngine::RunTasklet(_tasklet, TaskletRunner::Asynchronous); } else { _ended = Tasklet::Completed; } } else { _ended = Tasklet::Failed; } emit completeChanged(); }
void DatabaseBox::doActivePopup(PlaylistTitle *item_ptr) { if (active_popup) return; // Popup for active playlist active_popup = new MythPopupBox(GetMythMainWindow(), "active_popup"); active_pl_edit = new MythRemoteLineEdit(active_popup); active_popup->addWidget(active_pl_edit); active_pl_edit->setFocus(); active_popup->addButton(tr("Copy To New Playlist"), this, SLOT(copyNewPlaylist())); active_popup->addButton(tr("Clear the Active Play Queue"), this, SLOT(clearActive())); QAbstractButton *pb = active_popup->addButton(tr("Save Back to Playlist Tree"), this, SLOT(popBackPlaylist())); // CD writing bool cdwriter = false; if (gCoreContext->GetNumSetting("CDWriterEnabled")) { QString scsidev = MediaMonitor::defaultCDWriter(); if (!scsidev.isEmpty()) cdwriter = true; } QAbstractButton *cdaudiob = NULL; QAbstractButton *cdmp3b = NULL; if (cdwriter) { #if 0 /* Disabled as Playlist::CreateCDAudio() is empty, it is called by CreateCDAudio() */ cdaudiob = active_popup->addButton(tr("Create Audio CD from " "Playlist"), this, SLOT(CreateCDAudio())); #endif cdmp3b = active_popup->addButton(tr("Create MP3 CD from Playlist"), this, SLOT(CreateCDMP3())); active_popup->addButton(tr("Clear CD-RW Disk"), this, SLOT(BlankCDRW())); double size_in_MB = 0.0; double size_in_sec = 0.0; active_playlist->computeSize(size_in_MB, size_in_sec); int disksize = gCoreContext->GetNumSetting("CDDiskSize", 2); double max_size_in_MB; double max_size_in_min; if (disksize == 1) { max_size_in_MB = 650; max_size_in_min = 75; } else { max_size_in_MB = 700; max_size_in_min = 80; } double ratio_MB = 100.0 * size_in_MB / max_size_in_MB; double ratio_sec = 100.0 * size_in_sec / 60.0 / 1000.0 / max_size_in_min; QString label1; QString label2; label1.sprintf("Size: %dMB (%02d%%)", (int)(size_in_MB), (int)(ratio_MB)); label2.sprintf("Duration: %3dmin (%02d%%)", (int)(size_in_sec / 60.0 / 1000.0), (int)(ratio_sec)); active_popup->addLabel(label1); active_popup->addLabel(label2); cdmp3b->setEnabled((ratio_MB <= 100.0)); if (cdaudiob) { cdaudiob->setEnabled((ratio_sec <= 100.0)); cdaudiob->setEnabled(false); } } (void)item_ptr; active_pl_edit->setText(""); active_popup->ShowPopup(this, SLOT(closeActivePopup())); if (gMusicData->all_playlists->pendingWriteback()) pb->setEnabled(true); else pb->setEnabled(false); }
void Dialog::enableButton(ButtonCode button, bool enable) { QAbstractButton *b = getButton(button); if (b) { b->setEnabled(enable); } }
void InstallProcessPage::prepareInstallation() { progressBarInstallation->setValue( 5 ); listWidgetDosBoxProcessStatus->addItem( tr( "dboxfe: prepare installation ..." ) ); // Make a application thread qApp->processEvents(); // Get the wizard next-button QAbstractButton *buttonNext = GameWizard::instance()->button( QWizard::NextButton ); if ( buttonNext ) { buttonNext->setEnabled( false ); } progressBarInstallation->setValue( 10 ); listWidgetDosBoxProcessStatus->addItem( tr( " get required fields" ) ); // Get dosbox binary and setup settings dosBoxBinary = field( "dosBoxBinary" ).toString(); installSetupFile = field( "installSetupFile" ).toString(); installFolder = field( "installFolder" ).toString(); progressBarInstallation->setValue( 15 ); listWidgetDosBoxProcessStatus->addItem( tr( " open installation.conf" ) ); // Get installation config QString m_installConf = ":/install_conf"; QFile installConf( m_installConf ); // Open installation config if ( !installConf.open( QFile::ReadOnly | QFile::Text ) ) { QMessageBox::information( 0, tr( "Game Wizard" ), tr( "Can not read " ) + installConf.fileName() ); return; } // Read installation config QTextStream installTextStream( &installConf ); QString m_conf = installTextStream.readAll(); QString keyboardLayout = QLocale::languageToString( QLocale::system().language() ); if( keyboardLayout == "German" ) { keyboardLayout = "GR"; } else { keyboardLayout = "none"; } progressBarInstallation->setValue( 20 ); listWidgetDosBoxProcessStatus->addItem( tr( " replace installation.conf variables" ) ); QFileInfo dvdDirectory( installSetupFile ); m_conf.replace( "$(KEYBOARD_LAYOUT)", keyboardLayout ); m_conf.replace( "$(DVD_CD_DIRECTORY)", dvdDirectory.absolutePath() ); m_conf.replace( "$(INSTALLATION_DIRECTORY)", installFolder ); m_conf.replace( "$(SETUP_EXECUTABLE)", dvdDirectory.fileName() ); progressBarInstallation->setValue( 25 ); listWidgetDosBoxProcessStatus->addItem( tr( " close installation.conf" ) ); // Close install config installConf.flush(); installConf.close(); progressBarInstallation->setValue( 30 ); listWidgetDosBoxProcessStatus->addItem( tr( " create required directories" ) ); // Set real installation config for save on hard disc m_installConf = ""; m_installConf = QDir::homePath(); m_installConf.append( "/.dboxfe" ); // create profile directory if this not exists QDir profileDir( m_installConf ); if ( !profileDir.exists() ) { profileDir.mkpath( m_installConf ); } progressBarInstallation->setValue( 40 ); listWidgetDosBoxProcessStatus->addItem( tr( " open installation.conf again" ) ); // Append the installation config file m_installConf.append( "/installation.conf" ); QFile realInstallConf( m_installConf ); // Open real installation config if ( !realInstallConf.open( QFile::WriteOnly | QFile::Text ) ) { QMessageBox::information( 0, tr( "Game Wizard" ), tr( "Can not read " ) + realInstallConf.fileName() ); progressBarInstallation->setValue( 0 ); listWidgetDosBoxProcessStatus->addItem( tr( " ERROR - Can not read %1" ).arg( realInstallConf.fileName() ) ); return; } // Read real installation config QTextStream realInstallTextStream( &realInstallConf ); realInstallTextStream << m_conf; progressBarInstallation->setValue( 45 ); listWidgetDosBoxProcessStatus->addItem( tr( " save installation.conf" ) ); // Close and write real install config realInstallTextStream.flush(); installConf.flush(); installConf.close(); progressBarInstallation->setValue( 50 ); listWidgetDosBoxProcessStatus->addItem( tr( " finish" ) ); listWidgetDosBoxProcessStatus->addItem( tr( "" ) ); progressBarInstallation->setValue( 55 ); listWidgetDosBoxProcessStatus->addItem( tr( "dboxfe: begin installation ..." ) ); install( dosBoxBinary, "-conf", """" + realInstallConf.fileName() + """", buttonNext ); }
SlideShow::SlideShow(QWidget *parent) : QWidget(parent) , imageViewer(0) , playlist(0) , statusLabel(0) , countdownLabel(0) , playButton(0) , stopButton(0) , viewerLayout(0) { imageViewer = new QMediaImageViewer(this); connect(imageViewer, SIGNAL(stateChanged(QMediaImageViewer::State)), this, SLOT(stateChanged(QMediaImageViewer::State))); connect(imageViewer, SIGNAL(mediaStatusChanged(QMediaImageViewer::MediaStatus)), this, SLOT(statusChanged(QMediaImageViewer::MediaStatus))); connect(imageViewer, SIGNAL(elapsedTimeChanged(int)), this, SLOT(elapsedTimeChanged(int))); playlist = new QMediaPlaylist; imageViewer->bind(playlist); connect(playlist, SIGNAL(loaded()), this, SLOT(playlistLoaded())); connect(playlist, SIGNAL(loadFailed()), this, SLOT(playlistLoadFailed())); connect(playlist, SIGNAL(loaded()), this, SLOT(playlistLoaded())); connect(playlist, SIGNAL(loadFailed()), this, SLOT(playlistLoadFailed())); QVideoWidget *videoWidget = new QVideoWidget; imageViewer->bind(videoWidget); statusLabel = new QLabel(tr("%1 Images").arg(0)); statusLabel->setAlignment(Qt::AlignCenter); viewerLayout = new QStackedLayout; viewerLayout->setStackingMode(QStackedLayout::StackAll); viewerLayout->addWidget(videoWidget); viewerLayout->addWidget(statusLabel); statusLabel = new QLabel(tr("%1 Images").arg(0)); statusLabel->setAlignment(Qt::AlignCenter); viewerLayout = new QStackedLayout; viewerLayout->setStackingMode(QStackedLayout::StackAll); viewerLayout->addWidget(videoWidget); viewerLayout->addWidget(statusLabel); QMenu *openMenu = new QMenu(this); openMenu->addAction(tr("Directory..."), this, SLOT(openDirectory())); openMenu->addAction(tr("Playlist..."), this, SLOT(openPlaylist())); QToolButton *openButton = new QToolButton; openButton->setIcon(style()->standardIcon(QStyle::SP_DialogOpenButton)); openButton->setMenu(openMenu); openButton->setPopupMode(QToolButton::InstantPopup); playButton = new QToolButton; playButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay)); playButton->setEnabled(false); connect(playButton, SIGNAL(clicked()), this, SLOT(play())); connect(this, SIGNAL(enableButtons(bool)), playButton, SLOT(setEnabled(bool))); stopButton = new QToolButton; stopButton->setIcon(style()->standardIcon(QStyle::SP_MediaStop)); stopButton->setEnabled(false); connect(stopButton, SIGNAL(clicked()), imageViewer, SLOT(stop())); QAbstractButton *nextButton = new QToolButton; nextButton->setIcon(style()->standardIcon(QStyle::SP_MediaSkipForward)); nextButton->setEnabled(false); connect(nextButton, SIGNAL(clicked()), playlist, SLOT(next())); connect(this, SIGNAL(enableButtons(bool)), nextButton, SLOT(setEnabled(bool))); QAbstractButton *previousButton = new QToolButton; previousButton->setIcon(style()->standardIcon(QStyle::SP_MediaSkipBackward)); previousButton->setEnabled(false); connect(previousButton, SIGNAL(clicked()), playlist, SLOT(previous())); connect(this, SIGNAL(enableButtons(bool)), previousButton, SLOT(setEnabled(bool))); countdownLabel = new QLabel; QBoxLayout *controlLayout = new QHBoxLayout; controlLayout->setMargin(0); controlLayout->addWidget(openButton); controlLayout->addStretch(1); controlLayout->addWidget(previousButton); controlLayout->addWidget(stopButton); controlLayout->addWidget(playButton); controlLayout->addWidget(nextButton); controlLayout->addStretch(1); controlLayout->addWidget(countdownLabel); QBoxLayout *layout = new QVBoxLayout; layout->addLayout(viewerLayout); layout->addLayout(controlLayout); setLayout(layout); }