📄 menu-menu-cpp.html
字号:
~MyMenuItem(){} void paint( <a name="QPainter"></a><a href="qpainter.html">QPainter</a>* p, const QColorGroup& /*cg*/, bool /*act*/, bool /*enabled*/, int x, int y, int w, int h ) { p-><a name="setFont"></a><a href="qpainter.html#998df2">setFont</a> ( font ); p-><a name="drawText"></a><a href="qpainter.html#0f088f">drawText</a>( x, y, w, h, AlignLeft | AlignVCenter | ShowPrefix | DontClip, string ); } <a name="QSize"></a><a href="qsize.html">QSize</a> sizeHint() { return QFontMetrics( font ).size( AlignLeft | AlignVCenter | ShowPrefix | DontClip, string ); }private: <a name="QString"></a><a href="qstring.html">QString</a> string; <a name="QFont"></a><a href="qfont.html">QFont</a> font;};MenuExample::MenuExample( <a name="QWidget"></a><a href="qwidget.html">QWidget</a> *parent, const char *name ) : <a href="qwidget.html">QWidget</a>( parent, name ){ <a name="QPixmap"></a><a href="qpixmap.html">QPixmap</a> p1( p1_xpm ); <a href="qpixmap.html">QPixmap</a> p2( p2_xpm ); <a href="qpixmap.html">QPixmap</a> p3( p3_xpm ); <a name="QPopupMenu"></a><a href="qpopupmenu.html">QPopupMenu</a> *print = new <a href="qpopupmenu.html">QPopupMenu</a>( this ); CHECK_PTR( print ); print-><a name="insertTearOffHandle"></a><a href="qpopupmenu.html#27032b">insertTearOffHandle</a>(); print-><a name="insertItem"></a><a href="qmenudata.html#deddb9">insertItem</a>( "&Print to printer", this, SLOT(<a name="printer"></a><a href="#327">printer</a>()) ); print-><a href="qmenudata.html#deddb9">insertItem</a>( "Print to &file", this, SLOT(<a name="file"></a><a href="#328">file</a>()) ); print-><a href="qmenudata.html#deddb9">insertItem</a>( "Print to fa&x", this, SLOT(<a name="fax"></a><a href="#329">fax</a>()) ); print-><a name="insertSeparator"></a><a href="qmenudata.html#e34b79">insertSeparator</a>(); print-><a href="qmenudata.html#deddb9">insertItem</a>( "Printer &Setup", this, SLOT(<a name="printerSetup"></a><a href="#330">printerSetup</a>()) ); <a href="qpopupmenu.html">QPopupMenu</a> *file = new <a href="qpopupmenu.html">QPopupMenu</a>( this ); CHECK_PTR( file ); file-><a href="qmenudata.html#deddb9">insertItem</a>( p1, "&Open", this, SLOT(<a name="open"></a><a href="#316">open</a>()), CTRL+Key_O ); file-><a href="qmenudata.html#deddb9">insertItem</a>( p2, "&New", this, SLOT(<a name="news"></a><a href="#317">news</a>()), CTRL+Key_N ); file-><a href="qmenudata.html#deddb9">insertItem</a>( p3, "&Save", this, SLOT(<a name="save"></a><a href="#318">save</a>()), CTRL+Key_S ); file-><a href="qmenudata.html#deddb9">insertItem</a>( "&Close", this, SLOT(<a name="closeDoc"></a><a href="#319">closeDoc</a>()), CTRL+Key_W ); file-><a href="qmenudata.html#e34b79">insertSeparator</a>(); file-><a href="qmenudata.html#deddb9">insertItem</a>( "&Print", print, CTRL+Key_P ); file-><a href="qmenudata.html#e34b79">insertSeparator</a>(); file-><a href="qmenudata.html#deddb9">insertItem</a>( "E&xit", qApp, SLOT(quit()), CTRL+Key_Q ); <a href="qpopupmenu.html">QPopupMenu</a> *edit = new <a href="qpopupmenu.html">QPopupMenu</a>( this ); CHECK_PTR( edit ); int undoID = edit-><a href="qmenudata.html#deddb9">insertItem</a>( "&Undo", this, SLOT(<a name="undo"></a><a href="#320">undo</a>()) ); int redoID = edit-><a href="qmenudata.html#deddb9">insertItem</a>( "&Redo", this, SLOT(<a name="redo"></a><a href="#321">redo</a>()) ); edit-><a name="setItemEnabled"></a><a href="qmenudata.html#c9a23c">setItemEnabled</a>( undoID, FALSE ); edit-><a href="qmenudata.html#c9a23c">setItemEnabled</a>( redoID, FALSE ); <a href="qpopupmenu.html">QPopupMenu</a>* options = new <a href="qpopupmenu.html">QPopupMenu</a>( this ); CHECK_PTR( options ); options-><a href="qpopupmenu.html#27032b">insertTearOffHandle</a>(); options-><a name="setCaption"></a><a href="qwidget.html#d6a291">setCaption</a>("Options"); options-><a href="qmenudata.html#deddb9">insertItem</a>( "&Normal Font", this, SLOT(<a name="normal"></a><a href="#322">normal</a>()) ); options-><a href="qmenudata.html#e34b79">insertSeparator</a>(); options-><a name="polish"></a><a href="qwidget.html#c14a09">polish</a>(); // adjust system settings <a href="qfont.html">QFont</a> f = options-><a name="font"></a><a href="qwidget.html#167922">font</a>(); f.<a name="setBold"></a><a href="qfont.html#ec241e">setBold</a>( TRUE ); boldID = options-><a href="qmenudata.html#deddb9">insertItem</a>( new MyMenuItem( "Bold", f ) ); options-><a name="setAccel"></a><a href="qmenudata.html#58b23b">setAccel</a>( CTRL+Key_B, boldID ); options-><a name="connectItem"></a><a href="qmenudata.html#d7f757">connectItem</a>( boldID, this, SLOT(<a name="bold"></a><a href="#323">bold</a>()) ); f = font(); f.<a name="setUnderline"></a><a href="qfont.html#c11804">setUnderline</a>( TRUE ); underlineID = options-><a href="qmenudata.html#deddb9">insertItem</a>( new MyMenuItem( "Underline", f ) ); options-><a href="qmenudata.html#58b23b">setAccel</a>( CTRL+Key_U, underlineID ); options-><a href="qmenudata.html#d7f757">connectItem</a>( underlineID, this, SLOT(<a name="underline"></a><a href="#324">underline</a>()) ); isBold = FALSE; isUnderline = FALSE; options-><a name="setCheckable"></a><a href="qpopupmenu.html#672d77">setCheckable</a>( TRUE ); <a href="qpopupmenu.html">QPopupMenu</a> *help = new <a href="qpopupmenu.html">QPopupMenu</a>( this ); CHECK_PTR( help ); help-><a href="qmenudata.html#deddb9">insertItem</a>( "&About", this, SLOT(<a name="about"></a><a href="#325">about</a>()), CTRL+Key_H ); help-><a href="qmenudata.html#deddb9">insertItem</a>( "About &<a name="Qt"></a><a href="qt.html">Qt</a>", this, SLOT(<a name="aboutQt"></a><a href="#326">aboutQt</a>()) ); menu = new <a name="QMenuBar"></a><a href="qmenubar.html">QMenuBar</a>( this ); CHECK_PTR( menu ); menu->insertItem( "&File", file ); menu->insertItem( "&Edit", edit ); menu->insertItem( "&Options", options ); menu->insertSeparator(); menu->insertItem( "&Help", help ); menu->setSeparator( QMenuBar::InWindowsStyle ); label = new <a name="QLabel"></a><a href="qlabel.html">QLabel</a>( this ); CHECK_PTR( label ); label->setGeometry( 20, <a name="rect"></a><a href="qwidget.html#75ae71">rect</a>().center().y()-20, <a name="width"></a><a href="qwidget.html#2edab1">width</a>()-40, 40 ); label->setFrameStyle( QFrame::Box | QFrame::Raised ); label->setLineWidth( 1 ); label->setAlignment( AlignCenter ); <a name="connect"></a><a href="qobject.html#fbde73">connect</a>( this, SIGNAL(explain(const QString&)), label, SLOT(setText(const QString&)) ); <a name="setMinimumSize"></a><a href="qwidget.html#c0b5fb">setMinimumSize</a>( 100, 80 );}void <a name="316"></a>MenuExample::open(){ emit explain( "File/Open selected" );}void <a name="317"></a>MenuExample::news(){ emit explain( "File/New selected" );}void <a name="318"></a>MenuExample::save(){ emit explain( "File/Save selected" );}void <a name="319"></a>MenuExample::closeDoc(){ emit explain( "File/Close selected" );}void <a name="320"></a>MenuExample::undo(){ emit explain( "Edit/Undo selected" );}void <a name="321"></a>MenuExample::redo(){ emit explain( "Edit/Redo selected" );}void <a name="322"></a>MenuExample::normal(){ isBold = FALSE; isUnderline = FALSE; menu->setItemChecked( boldID, isBold ); menu->setItemChecked( underlineID, isUnderline ); emit explain( "Options/Normal selected" );}void <a name="323"></a>MenuExample::bold(){ isBold = !isBold; menu->setItemChecked( boldID, isBold ); emit explain( "Options/Bold selected" );}void <a name="324"></a>MenuExample::underline(){ isUnderline = !isUnderline; menu->setItemChecked( underlineID, isUnderline ); emit explain( "Options/Underline selected" );}void <a name="325"></a>MenuExample::about(){ <a name="QMessageBox::about"></a><a href="qmessagebox.html#f6c3cd">QMessageBox::about</a>( this, "Qt Menu Example", "This example demonstrates simple use of Qt menus.\n" "You can cut and paste lines from it to your own\n" "programs." );}void <a name="326"></a>MenuExample::aboutQt(){ <a name="QMessageBox::aboutQt"></a><a href="qmessagebox.html#b72270">QMessageBox::aboutQt</a>( this, "Qt Menu Example" );}void <a name="327"></a>MenuExample::printer(){ emit explain( "File/Printer/Print selected" );}void <a name="328"></a>MenuExample::file(){ emit explain( "File/Printer/Print To File selected" );}void <a name="329"></a>MenuExample::fax(){ emit explain( "File/Printer/Print To Fax selected" );}void <a name="330"></a>MenuExample::printerSetup(){ emit explain( "File/Printer/Printer Setup selected" );}void <a name="331"></a>MenuExample::resizeEvent( <a name="QResizeEvent"></a><a href="qresizeevent.html">QResizeEvent</a> * ){ label->setGeometry( 20, <a href="qwidget.html#75ae71">rect</a>().center().y()-20, <a href="qwidget.html#2edab1">width</a>()-40, 40 );}int main( int argc, char ** argv ){ <a name="QApplication"></a><a href="qapplication.html">QApplication</a> a( argc, argv ); MenuExample m; a.<a name="setMainWidget"></a><a href="qapplication.html#7ad759">setMainWidget</a>( &m ); m.<a href="qwidget.html#d6a291">setCaption</a>("Qt Examples - Menus"); m.<a name="show"></a><a href="qwidget.html#200ee5">show</a>(); return a.<a name="exec"></a><a href="qapplication.html#84c7bf">exec</a>();}</pre><p><address><hr><div align="center"><table width="100%" cellspacing="0" border="0"><tr><td>Copyright
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -