📄 mainwindow.cpp
字号:
actionEditLower->addTo( rmbWidgets ); actionEditRaise->addTo( rmbWidgets );#endif rmbWidgets->insertSeparator(); actionEditAdjustSize->addTo( rmbWidgets ); actionEditHLayout->addTo( rmbWidgets ); actionEditVLayout->addTo( rmbWidgets ); actionEditGridLayout->addTo( rmbWidgets ); actionEditBreakLayout->addTo( rmbWidgets ); rmbWidgets->insertSeparator(); actionEditConnections->addTo( rmbWidgets ); rmbFormWindow = new QPopupMenu( this ); actionEditPaste->addTo( rmbFormWindow ); actionEditSelectAll->addTo( rmbFormWindow ); actionEditAccels->addTo( rmbFormWindow ); rmbFormWindow->insertSeparator(); actionEditAdjustSize->addTo( rmbFormWindow ); actionEditHLayout->addTo( rmbFormWindow ); actionEditVLayout->addTo( rmbFormWindow ); actionEditGridLayout->addTo( rmbFormWindow ); actionEditBreakLayout->addTo( rmbFormWindow ); rmbFormWindow->insertSeparator(); actionEditSlots->addTo( rmbFormWindow ); actionEditConnections->addTo( rmbFormWindow ); actionEditFormSettings->addTo( rmbFormWindow );}void MainWindow::toolSelected( QAction* action ){ actionCurrentTool = action; emit currentToolChanged(); if ( formWindow() ) formWindow()->commandHistory()->emitUndoRedo();}int MainWindow::currentTool() const{ if ( !actionCurrentTool ) return POINTER_TOOL; return QString::fromLatin1(actionCurrentTool->name()).toInt();}static void unifyFormName( FormWindow *fw, QWorkspace *workspace ){ QStringList lst; QWidgetList windows = workspace->windowList(); for ( QWidget *w =windows.first(); w; w = windows.next() ) { if ( w == fw ) continue; lst << w->name(); } if ( lst.findIndex( fw->name() ) == -1 ) return; QString origName = fw->name(); QString n = origName; int i = 1; while ( lst.findIndex( n ) != -1 ) { n = origName + QString::number( i++ ); } fw->setName( n ); fw->setCaption( n );}void MainWindow::fileNew(){ statusBar()->message( tr( "Select a template for the new form...") ); NewForm dlg( this, templatePath() ); if ( dlg.exec() == QDialog::Accepted ) { NewForm::Form f = dlg.formType(); if ( f != NewForm::Custom ) { insertFormWindow( f )->setFocus(); } else { QString filename = dlg.templateFile(); if ( !filename.isEmpty() && QFile::exists( filename ) ) { Resource resource( this ); if ( !resource.load( filename ) ) { QMessageBox::information( this, tr("Load Template"), tr("Couldn't load form description from template "+ filename ) ); return; } if ( formWindow() ) formWindow()->setFileName( QString::null ); unifyFormName( formWindow(), workspace ); } } } statusBar()->clear();}void MainWindow::fileOpen(){ statusBar()->message( tr( "Select a file...") ); QString filename = QFileDialog::getOpenFileName( QString::null, Import::filters(), this ); if ( !filename.isEmpty() ) { if ( filename.right( 4 ) == ".pro" ) { QStringList lst = getUiFiles( filename ); for ( QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) { QString fn = QUrl( QFileInfo( filename ).dirPath(), *it ).path(); openFile( fn ); } } else if ( filename.right( 3 ) == ".ui" ) { openFile( filename ); } else { statusBar()->message( tr( "Importing %1 using a 3rd party converter, this might take some time...").arg( filename ) ); (void)new Import( filename, this ); // deletes itself } }}void MainWindow::openFile( const QString &filename, bool validFileName ){ if ( filename.isEmpty() ) return; bool makeNew = FALSE; if ( !QFile::exists( filename ) ) { makeNew = TRUE; } else { QFile f( filename ); f.open( IO_ReadOnly ); QTextStream ts( &f ); makeNew = ts.read().length() < 2; } if ( !makeNew ) { statusBar()->message( tr( "Reading file %1...").arg( filename ) ); if ( QFile::exists( filename ) ) { QApplication::setOverrideCursor( WaitCursor ); Resource resource( this ); bool b = resource.load( filename ) && (FormWindow*)resource.widget(); if ( !validFileName && resource.widget() ) ( (FormWindow*)resource.widget() )->setFileName( QString::null ); QApplication::restoreOverrideCursor(); qApp->processEvents(); if ( b ) { rebuildCustomWidgetGUI(); statusBar()->message( tr( "File %1 opened.").arg( filename ), 3000 ); } else { statusBar()->message( tr( "Failed to load file %1").arg( filename ), 5000 ); QMessageBox::information( this, tr("Load File"), tr("Couldn't load file %1").arg( filename ) ); } } else { statusBar()->clear(); } } else { fileNew(); if ( formWindow() ) formWindow()->setFileName( filename ); }}bool MainWindow::fileSave(){ if ( !formWindow() ) return FALSE; if ( formWindow()->fileName().isEmpty() ) { return fileSaveAs(); } else { QApplication::setOverrideCursor( WaitCursor ); formWindow()->save( formWindow()->fileName() ); QApplication::restoreOverrideCursor(); } return TRUE;}bool MainWindow::fileSaveAs(){ statusBar()->message( tr( "Enter a filename..." ) ); if ( !formWindow() ) return FALSE; FormWindow *fw = formWindow(); QString filename = QFileDialog::getSaveFileName( QString::null, tr( "Qt User-Interface Files (*.ui);;All Files (*)" ), this ); if ( filename.isEmpty() ) return FALSE; QFileInfo fi( filename ); if ( fi.extension() != "ui" ) filename += ".ui"; fw->setFileName( filename ); fileSave(); return TRUE;}void MainWindow::fileSaveAll(){ QWidgetList windows = workSpace()->windowList(); for ( QWidget *w = windows.first(); w; w = windows.next() ) { if ( !w->inherits( "FormWindow" ) ) continue; w->setFocus(); qApp->processEvents(); fileSave(); }}static bool inSaveAllTemp = FALSE;void MainWindow::saveAllTemp(){ if ( inSaveAllTemp ) return; inSaveAllTemp = TRUE; statusBar()->message( tr( "Qt Designer is crashing - saving work as good as possible..." ) ); QWidgetList windows = workSpace()->windowList(); QString baseName = QString( getenv( "HOME" ) ) + "/.designer/saved-form-"; int i = 1; for ( QWidget *w = windows.first(); w; w = windows.next() ) { if ( !w->inherits( "FormWindow" ) ) continue; QString fn = baseName + QString::number( i++ ) + ".ui"; ( (FormWindow*)w )->setFileName( fn ); ( (FormWindow*)w )->save( fn ); } inSaveAllTemp = FALSE;}void MainWindow::fileCreateTemplate(){ CreateTemplate dia( this, 0, TRUE ); for ( int i = 0; i < WidgetDatabase::numWidgetGroups(); ++i ) { if ( WidgetDatabase::isContainer( i ) && WidgetDatabase::className( i ) != "QTabWidget" ) dia.listClass->insertItem( WidgetDatabase::className( i ) ); } QList<MetaDataBase::CustomWidget> *lst = MetaDataBase::customWidgets(); for ( MetaDataBase::CustomWidget *w = lst->first(); w; w = lst->next() ) { if ( w->isContainer ) dia.listClass->insertItem( w->className ); } dia.editName->setText( tr( "NewTemplate" ) ); connect( dia.buttonCreate, SIGNAL( clicked() ), this, SLOT( createNewTemplate() ) ); dia.exec();}void MainWindow::editUndo(){ if ( formWindow() ) formWindow()->undo();}void MainWindow::editRedo(){ if ( formWindow() ) formWindow()->redo();}void MainWindow::editCut(){ editCopy(); editDelete();}void MainWindow::editCopy(){ if ( formWindow() ) qApp->clipboard()->setText( formWindow()->copy() );}void MainWindow::editPaste(){ if ( !formWindow() ) return; QWidget *w = formWindow()->mainContainer(); QWidgetList l( formWindow()->selectedWidgets() ); if ( l.count() == 1 ) { w = l.first(); if ( WidgetFactory::layoutType( w ) != WidgetFactory::NoLayout || ( !WidgetDatabase::isContainer( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( w ) ) ) && w != formWindow()->mainContainer() ) ) w = formWindow()->mainContainer(); } if ( w && WidgetFactory::layoutType( w ) == WidgetFactory::NoLayout ) { formWindow()->paste( qApp->clipboard()->text(), WidgetFactory::containerOfWidget( w ) ); hierarchyView->widgetInserted( 0 ); formWindow()->commandHistory()->setModified( TRUE ); } else { // #### should we popup a messagebox here which says that // nothing has been pasted because you can't paste into a // laid out widget? (RS) }}void MainWindow::editDelete(){ if ( formWindow() ) formWindow()->deleteWidgets();}void MainWindow::editSelectAll(){ if ( formWindow() ) formWindow()->selectAll();}void MainWindow::editLower(){ if ( formWindow() ) formWindow()->lowerWidgets();}void MainWindow::editRaise(){ if ( formWindow() ) formWindow()->raiseWidgets();}void MainWindow::editAdjustSize(){ if ( formWindow() ) formWindow()->editAdjustSize();}void MainWindow::editLayoutHorizontal(){ if ( layoutChilds ) editLayoutContainerHorizontal(); else if ( layoutSelected && formWindow() ) formWindow()->layoutHorizontal();}void MainWindow::editLayoutVertical(){ if ( layoutChilds ) editLayoutContainerVertical(); else if ( layoutSelected && formWindow() ) formWindow()->layoutVertical();}void MainWindow::editLayoutGrid(){ if ( layoutChilds ) editLayoutContainerGrid(); else if ( layoutSelected && formWindow() ) formWindow()->layoutGrid();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -