精华内容
下载资源
问答
  • 一、qt中的treeView实现右键菜单栏的功能,主要使用的槽函数是: void on_treeView_customContextMenuRequested(const QPoint &pos) 界面就是拖个treeView控件在上面就行,构造函数的实现如下: ui->...

    一、qt中的treeView实现右键菜单栏的功能,主要使用的槽函数是:

    void on_treeView_customContextMenuRequested(const QPoint &pos)
    界面就是拖个treeView控件在上面就行,构造函数的实现如下:
    ui->setupUi(this);
        model = new QStandardItemModel(ui->treeView);//创建模型
        ui->treeView->setModel(model);//导入模型
        ui->treeView->setContextMenuPolicy(Qt::CustomContextMenu);
        ui->treeView->header()->setSectionResizeMode(QHeaderView::Stretch);
        model->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("Item")
        <<QStringLiteral("info")<<QStringLiteral("value"));//设置头部标签
        item = new QStandardItem(tr("one"));//创建一个条目对象
        model->appendRow(item);//通过模型对象添加这个条目
    
        model->setItem(1,0,new QStandardItem(tr("two")));
        model->setItem(2,0,new QStandardItem(tr("three")));
    
        //开始给第0行的子节点进行添加
        QStandardItem * itemFolder;
        itemFolder = new QStandardItem(tr("one_info"));
        item->appendRow(itemFolder);
        item->setChild(0,1,new QStandardItem(QStringLiteral("one_message")));
    
        for(int i=0;i<5;++i){
            QStandardItem* itemgroup = new QStandardItem(QStringLiteral("%1").arg(i+1));
            itemFolder->appendRow(itemgroup);
            itemFolder->setChild(itemFolder->index().row(),1,new QStandardItem(QStringLiteral("122222")));
        }
    
        //给第一行添加子节点
        model->item(1)->appendRow(new QStandardItem(tr("two info")));

    最后实现的界面效果如下:

    实现右键菜单栏功能的效果如下:

     二、实现双击不同节点,可以出现不同的结果,调用的槽函数是:

     void on_treeView_doubleClicked(const QModelIndex &index);

    最后实现的效果是:点击不同的节点打印出来不同的东西,如下:

    有兴趣可以参考源码链接,如下:

    https://download.csdn.net/download/Littlehero_121/12993841

     

    展开全文
  • Qt Designer中的部件并没有菜单、toolBar以及Action相关的部件,仅在MainWindow类型窗口提供了menu、toolBar相关的功能,Action可以在右侧的Action Editor中编辑,如图: 如果没有出现Action Editor,可以通过...
     
    

    一、引言

    Qt Designer中的部件栏并没有菜单、toolBar以及Action相关的部件,仅在MainWindow类型窗口提供了menu、toolBar相关的功能,Action可以在右侧的Action Editor中编辑,如图:
    在这里插入图片描述
    如果没有出现Action Editor,可以通过鼠标右键的弹出菜单将其打开,如图:

    展开全文
  • 模块五 菜单栏、工具栏、状态栏

    千次阅读 2010-09-29 17:30:00
    Visual Basic .NET 教程模块五菜单栏、工具栏、状态栏 能力目标:能够设计、创建和使用菜单、工具栏和状态栏 知识目标:掌握菜单控件、工具栏控件和状态栏控件常用的属性、方法和事件   ...

    Visual Basic .NET 教程

    模块五 菜单栏、工具栏、状态栏

    能力目标:能够设计、创建和使用菜单、工具栏和状态栏

    知识目标:掌握菜单控件、工具栏控件和状态栏控件常用的属性、方法和事件

     

    一个典型的Windows应用程序必然包含菜单、工具栏和状态栏,用户通过单击菜单中的菜单项,来实现应用程序所提供的功能,用户也可以通过单击工具栏上的工具按钮,来实现应用程序中的常用的主要功能,状态栏主要用于显示应用程序当前的状态等信息。菜单、工具栏和状态栏的使用,可以使应用程序的界面友好,方便用户的使用。

     

    项目一 菜单制作

    5-1设计制作一个如图所示的下拉菜单应用程序

     

     

    图一文件菜单

     

     

     

     

     

     

     

     

     

     

     

    设计步骤:

    1.新建项目vbnet5-1

    单击“文件”菜单,在出现的下位菜单中,单击“新建”,再单击“新建项目”,新建一个项目。项目存放在“H:/VB.net”下,项目名取“VBnet5-1”。项目类型选择“Visual Basic项目”、模板选择“Windows应用程序”,项目名与位置按以上要求改写,其他选默认值,单击“确定”按钮。

     

    图三 菜单控件

    2.添加菜单menustrip控件到窗体

    在工具箱中找到菜单控件menustrip如图一所示,双击menustrip控件就把此控件添加到窗体上。用同样的方法把richboxOpenfiledialogfontdialogcolordialogsavefiledialogprintdialog控件添加到窗体上。

    3.在菜单中添加菜单项

    在窗体中单击MainMenu控件对象,菜单对象显示内容为“请在此输入”。单击文本“请在此输入”,输入菜单名称。在已输入菜单的下方和右方出现“请在此输入”菜单框,按设计要求完成菜单的设计如图一、图二所示。

    4.设置菜单项的快捷键:单击“打开”菜单项,在“打开”菜单项的属性窗口找到ShortCutKeys属性,单击 ,弹出快捷方式设置对话框,如图所示。

     

    按要求设置好快捷键。

    5. 输入各菜单项的代码

    双击已建立的菜单项,进入相关菜单项的代码段,输入完成该项菜单项功能的代码。

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

            FontDialog1.Font = RichTextBox1.Font

            FontDialog1.ShowColor = True

            If FontDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then

                RichTextBox1.Font = FontDialog1.Font

            End If

        End Sub

    Private Sub 退出QToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 退出QToolStripMenuItem.Click

            Me.Close()

        End Sub

        Dim filename As String

        Private Sub 打开ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 打开ToolStripMenuItem.Click

            Try

                OpenFileDialog1.Filter = "文本文(*.txt)|*.txt|Word(*.doc)|*.doc|batch files(*.bat)|*.bat|所有文件(*.*)|*.*"

                '显示“打开”对话框前先判断返回值是否为“OK

                If OpenFileDialog1.ShowDialog = DialogResult.OK Then

                    '如果是OK则打开ss对话框,并把选中的文本文件放入richtextbox

                    RichTextBox1.LoadFile(OpenFileDialog1.FileName, RichTextBoxStreamType.PlainText)

                    filename = OpenFileDialog1.FileName

                End If

            Catch ex As Exception

                MsgBox("读取文件失败")

            End Try

        End Sub

        Private Sub 窗体总在最前面ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 窗体总在最前面ToolStripMenuItem.Click

            If 窗体总在最前面ToolStripMenuItem.Checked = False Then

                窗体总在最前面ToolStripMenuItem.Checked = True

                Me.TopMost = True

            Else

                窗体总在最前面ToolStripMenuItem.Checked = False

                Me.TopMost = False

            End If

        End Sub

        Private Sub 另存为ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 另存为ToolStripMenuItem.Click

     

            Dim filenum As Integer

            '设定文件保存对话框的属性

            With SaveFileDialog1

                .DefaultExt = "txt"

                .Filter = "Text files ( *.txt )|*.txt"

                .FilterIndex = 1

                .InitialDirectory = "C:/"

                .OverwritePrompt = True

                .Title = "文件保存对话框"

            End With

            '以下是把文本框中的文字另保存为文本文件

            If SaveFileDialog1.ShowDialog() = DialogResult.OK Then

                filename = SaveFileDialog1.FileName

                filenum = FreeFile()

                FileOpen(filenum, filename, OpenMode.Output)

                Write(filenum, RichTextBox1.Text)

                FileClose(filenum)

            End If

        End Sub

        Private Sub 保存ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 保存ToolStripMenuItem.Click

            Dim filenum As Integer

            Try

                filenum = FreeFile()

                FileOpen(filenum, filename, OpenMode.Output)

                Write(filenum, RichTextBox1.Text)

                FileClose(filenum)

            Catch ex As Exception

                MsgBox("写入失败")

            End Try

        End Sub

        Private Sub 打印ToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 打印ToolStripMenuItem1.Click

            Dim printdocument1 As New System.Drawing.Printing.PrintDocument

            If PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then

                printdocument1.Print()

            End If

        End Sub

        Private Sub 新建ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 新建ToolStripMenuItem.Click

            RichTextBox1.Text = ""

        End Sub

        Private Sub 字体设置ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 字体设置ToolStripMenuItem.Click

            If FontDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then

                RichTextBox1.SelectionFont = FontDialog1.Font

            End If

        End Sub

        Private Sub 颜色设置ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 颜色设置ToolStripMenuItem.Click

            If ColorDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then

                RichTextBox1.SelectionColor = ColorDialog1.Color

            End If

        End Sub

        Private Sub 增加窗体的尺寸ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 增加窗体的尺寸ToolStripMenuItem.Click

            'Me.Size = New Size(Me.Size.Width + 10, Me.Size.Height + 10)

            Me.Width += 10

            Me.Height += 10

        End Sub

        Private Sub 减少窗体的尺寸ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 减少窗体的尺寸ToolStripMenuItem.Click

            Me.Width += 10

            Me.Height += 10

        End Sub

        Private Sub 增加窗体的透明度ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 增加窗体的透明度ToolStripMenuItem.Click

            Me.Opacity -= 0.05

        End Sub

        Private Sub 减少窗体的透明度ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 减少窗体的透明度ToolStripMenuItem.Click

            Me.Opacity += 0.05

    End Sub

    支撑知识:

    菜单是Windows界面的重要组成部分,VB.net菜单形式丰富,功能强大,菜单给庞杂的命令进行分组,使用户能够更方便、更直观地访问这些命令。同时菜单还能使自己设计的应用程序看起来更专业化,更美观大方。

    菜单有下拉式菜单和弹出式菜单两种类型。

    1-1.下拉式菜单组成

    1)下拉式菜单由主菜单、主菜单项、子菜单等组成。
    2)子菜单可分为一级子菜单、二级子菜单直到五级子菜单。
    3)每级子菜单由菜单项、快捷键、分隔条、子菜单提示符等组成。

    主菜单项

    子菜单提示符

    一级菜单

    对话提示符

    热键(AIt+O)

    快捷键(Ctrl+Q)

    快捷键(Ctrl+Q)

     

    快捷键(Ctrl+Q)

     

    二级子菜单

    菜单项

    分隔条

    4.2 下拉式菜单的组成

    菜单项:所有子菜单的基本元素就是菜单项,每个菜单项代表一条命令或子菜单标题。
    分隔条:分隔条为一条横线,用于在子菜单中区分不同功能的菜单项组,使菜单项功能一目了然,并且方便操作。
    快捷键:为每个最底层的菜单项设置快捷键后,可以在不用鼠标操作菜单项的情况下,通过快捷键直接执行相应的命令。
    热键:热键是在鼠标失效时,为用户操作菜单项提供的按键选择,使用热键时,须与<Alt>键同时使用。
    子菜单提示符:如果某个菜单项后有子菜单,则在此菜单项的右边出现一个向右指示的小三角子菜单提示符。

    对话框提示符:如果单击某个菜单项会弹出对话框,则在此菜单项的后边应加上“”。

    1-2MenuStrip控件常用属性和事件

    MenuStrip 控件主要用于生成所在窗体的主菜单.在设计窗体中添加该控件后,会在窗体上显示一个菜单栏,可以直接在此菜单栏上编辑各主菜单项及对应的子菜单项,也可以通过鼠标右键单击对应的菜单项修改项的类型;当菜单的结构建立起后,再为每个菜单项编写事件代码,即可完成窗体的菜单设计.
    编辑各菜单项内容时,可以用符号"&"指定该菜单项的组合键,让其后的字母带下划线显示,如编辑菜单项"E&xit",则会显示为"Exit",意思是可以直接用"Alt+x"组合键实现与单击该菜单项相同的功能;用符号"-"可以在菜单中显示各项之间的分隔条
    .
    1.MenuStrip
    控件的基本属性

    (1)[AllowItemReorder]
    属性:当程序运行时,按下键是否允许改变各菜单项的左右排列顺序.默认值为false,当更改该属性值为true,按下键的同时可以用鼠标拖动各菜单项以调整其在菜单栏上的左右位置.
    (2)[Dock]
    属性:指示菜单栏在窗体中出现的位置,默认值为
    Top.
    (3)[GripStyle]
    属性:是否显示菜单栏的指示符,即纵向排列的多个凹点,默认值为Hidden.当更改该属性值为Visible,显示位置由[GripMargin]属性指定
    .
    (4)[Items]
    属性:用于编辑菜单栏上显示的各菜单项.单击[Items]属性后[…]按钮,弹出[项集合编辑器]对话框,如图所示
    .
    2.MenuStrip
    控件的常用事件

    (1)ItemClicked事件:当单击菜单栏上各主菜单项时触发的操作.
    (2)LayoutCompleted
    事件:当菜单栏上各主菜单项的排列顺序发生变化之后触发的操作.使用该事件时,[AllowItemRecord]属性必须设为true,即当程序运行时,按下Alt键重新排列菜单栏上各主菜单项的顺序之后触发该事件.

    1-3菜单项的属性和事件
    1.MenuItem
    菜单项的基本属性
    (1)[Checked]属性:指示菜单项是否被选中.默认值为false.
    (2) [CheckOnClick]
    属性:决定单击菜单项时是否使其选中状态发生改变.默认值为false,即单击菜单项不会影响其[Checked]属性:当更改该属性值为true,则每次单击菜单项都会影响其[Checked]属性,使其值在falsetrue之间切换
    .
    (3)[CheckState]
    属性:指示菜单项的状态.与复选框CheckBox控件的[ThreeState]属性相同,共有3个属性值:Checked,UncheckedIndeterminate,分别表示选中,未选中和不确定3种状态
    .
    (4)[DisplayStyle]
    属性:指示菜单项上的显示内容.共有4个属性值:None,Text,ImageImageAndText,分别表示不显示任何内容,仅显示图标,同时显示文本和图标.默认值为
    ImageAndText.
    (5)[DropDownItems]
    属性:单击该属性后的[…]按钮,调出[项集合编辑器]对话框,以此编辑该菜单项对应得子菜单中的各菜单项
    .
    (6)[Image]
    属性:指定在该菜单项上显示的图标
    .
    (7)[ImageScaling]
    属性:指定是否调整图标大小.默认属性值为SizeToFit,即调整图标大小以适应菜单项.该属性的另一个属性值为None,即不调整图标大小
    .
    (8) [ShortcutScaling]
    属性:为菜单项指定的快捷键.单击该属性后的下拉按钮,出现如图所示的设置页面,用于设置菜单项的快捷组合键.设置时,可以选择,,3个功能键的任意组合(注意键不能单独使用)作为修饰符;[]下拉列表框中选择快捷键,其中包括键盘可输入的任何字符.完成设置后即可使用说设置的快捷键调用菜单项的功能.该属性的默认值为
    None.
    注意:[ShortcutKeys]属性所设置的快捷键与使用"&" 设置的组合键,虽然都是通过设定的键盘操作完成与鼠标单击相同的功能,但是在本质上二者是不同的."&"设置的组合键只有在菜单项可见的情况下才可使用,所以不能称之为快捷键;[ShortcutKeys]属性所设置的快捷键无论菜单项是否可见都可以使用
    .
    (9)[ShowShortCutKeys]
    属性:指示是否在菜单项上显示快捷键.默认值为true,即在菜单项上按照[ShowShortCutKeys]属性的设置显示快捷键
    .
    2.MenuItem
    菜单项的常用事件

    (1)Click事件:单击菜单项时触发.
    (2)DropDownClosed
    事件:关闭菜单项的子菜单时触发的操作
    .
    (3)DropDownItemClicked
    事件:单击菜单项的子菜单中任何一项时触发的操作
    .
    (4)DropDownOpened
    事件:菜单项的子菜单打开之后触发的操作
    .
    (5)
    DropDownOpening
    事件:打开菜单项的子菜单时触发的操作.

     

    5-2 在例5-1的基础上制作一个如图所示的弹出菜单,

     

    操作步骤:

    1.在工具箱中找到ContextMenuStrip组件,选中并拖放到地form1窗体中,此时,组件栏出现一个ContextMenuStip1的控件。

    2.单击ContextMenuStrip1控件,在窗体会显示ContextMenuStrip的字样来,在ContextMenuStrip的下方显示“请在此键入”文本框,在文本框中输入要添加的菜单项“剪切”,“复制”,“粘贴”。

    3.把richtextbox1ContextMenuStrip属性值设置为ContextMenuStrip1

    4.编写菜单项的代码:

    Private Sub 复制ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 复制ToolStripMenuItem.Click

            RichTextBox1.Copy()

        End Sub

     

        Private Sub 前切ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 前切ToolStripMenuItem.Click

            RichTextBox1.Cut()

        End Sub

     

        Private Sub 粘贴ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 粘贴ToolStripMenuItem.Click

            RichTextBox1.Paste()

        End Sub

    支撑知识:

    2-1ContextMenuStrip控件常用属性和事件
    ContextMenuStrip
    控件的功能是制作右键快捷菜单.注意:该控件是用于为其他控件服务的,不能单独使用.当向窗体中添加一个 ContextMenuStrip控件,会在窗体顶端出现与MenuStrip控件相似的菜单栏,所以也就不能在菜单栏上添加任何菜单项,只能在子菜单中编辑各菜单项.编辑完成的ContextMenuStrip控件需要在窗体或相关控件的[ContextMenuStrip]属性中与其建立关联,才可以在程序运行时用鼠标右键单击对应控件,弹出该快捷菜单.
    1.
    常用的基本属性

    (1)[Items]属性:用于编辑快捷菜单上的各菜单项.其编辑方式与MenuStrip控件的菜单项编辑相似,都是调用[项集合编辑器]对话框来生成菜单项的.
    (2)[Opacity]
    属性:设置快捷菜单的透明度.取值范围为0%~100%,默认值为100%,即不透明.注意:该属性只能在代码中才能看到
    .
    2.
    常用的基本事件

    (1)ItemClicked事件:快捷菜单中的任何一个菜单项被单击时触发的操作.
    (2)Opening
    事件:快捷菜单打开时触发的操作.

    项目二 工具栏和状态栏

    5-3在例二的基础上制作一个如图所示工具栏

     

    操作步骤:

    1.在工具箱中找到Toolstrip控件,如图所示,双击toolstrip控件,把该控件加入到窗体的控件组上。

    2.选择需要添加的工具栏项目类型,如图所示,我们依次添加7ToolStripButton控件,两个ToolStripComboBox控件,3ToolStripSeparator控件。

    3.设置各控件属性如下

    控件名

    属性

    ToolStripButton1

     

     

    ToolStripButton2

     

     

    ToolStripButton3

     

     

     

    选择要添加的工具栏项目

    单击此处,列出可供选择的控件类型

     

     

     

     

     

    ToolStrip控件

    ToolStrip控件是一个用于创建工具栏、菜单结构和状态栏的容器控件。ToolStrip直接用于工具栏,还可以用作MenuStripStatusStrip控件的基类。

    ToolStrip控件在用于工具栏时,是为Windows应用程序添加工具栏,工具栏一般由多个按钮,标签、组合框等排列组成,通过这些项可以快速地执行程序提供的一些常用命令,比使用菜单选择更加方便快捷。
    Windows
    窗体中添加一个ToolStrip控件后,窗体顶端会出现一个工具栏,单击工具栏上的小箭头,弹出下拉菜单,其中每一项都是可以使用在工具栏上的项类型,常用的有Button(按钮),ComboBox(下拉框)TextBox(文本框)等控件,单击某项即可添加到工具栏上.
    当然,也可以通过ToolStrip控件的[Items]属性调用[项集合编辑器]对话框完成工具栏的编辑,ToolStrip控件的常用属性和事件与MenuStrip控件基本相同,工具栏上各项的属性和事件与MenuStrip控件中的菜单项基本相同,这里就不多讲了。

    5-4在例三的基础上制作一个如图所示状态栏

     

    操作步骤:

    1.在工具箱中找到Toolstrip控件,双击toolstrip控件,把该控件加入到窗体的控件组上。

    2.选择需要添加的工具栏项目类型如图所示,我们添加两个ToolStripStatusLabel控件

    选择要添加的状态栏项目

    单击此处,列出可供选择的控件类型

    3.添加代码如下:

    Private Sub form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

           ToolStripStatusLabel1.Text = Now

    End Sub

    Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged

            ToolStripStatusLabel2.Text = Space(3) & "共计" & RichTextBox1.Text.Length & ""

        End Sub

    支撑知识:

    StatusStrip 控件主要出现在当前Window窗体的底部,一般使用文本和图像向用户显示应用程序当前状态的信息。StatusStrip 控件允许添加的控件包括:StatusLabel控件(添加标签控件),ProgressBar控件(进度条控件),DropDownButton控件(下拉列表控件),以及SplitButton控件(分割控件)

     

    展开全文
  • 通过菜单栏,或工具栏,或按钮,实现图片框中图像的显示和隐藏。 1. 更改窗体大小 由于添加的控件比较多,默认的窗体300*300肯定不够用的,需要将窗体大小调大。现更改为800*600。 打开TriPaint.cs[设计]文件,...

    binzhouweichao@163.com

    2013-10-17

    仍然使用上篇的项目。

    实现的作用为:

    通过菜单栏,或工具栏,或按钮,实现图片框中图像的显示和隐藏。


    1. 更改窗体大小

    由于添加的控件比较多,默认的窗体300*300肯定不够用的,需要将窗体大小调大。现更改为800*600。

    打开TriPaint.cs[设计]文件,选中窗体,在右下角的属性窗口中,找到Size属性,将值改为:800, 600。


    2. 添加菜单栏MenuStrip控件

    选中窗体,打开左侧的工具箱,找到MenuStrip控件,点击鼠标左键并拖到窗体中。

    菜单栏的默认位置为窗体顶部,默认宽度为24,长度为铺满窗体。第一个添加的MenuStrip控件的名称默认为menuStrip1。在右下角的属性窗口中,可以找到具体的数据,如:

    位置Location为:0, 0。也就是说,menuStrip1的右上角(0, 0)位于窗体的右上角(0, 0)位置。

    长宽Size为:784, 24。也就是说,menuStrip1的长为784,正好是窗体内容纳控件的最大长度,宽度为24,应该是MenuStrip控件默认的宽度。

    其他属性如Margin、Padding默认即可。


    3. 添加工具栏ToolStrip控件

    同上,在左侧的工具箱中找到ToolStrip控件并拖到窗体中。

    工具栏默认位置为菜单栏的下方,与菜单栏边界吻合。默认宽度为25,长度为窗体内控件最大长度,默认名称为toolStrip1。属性中具体数据:

    位置Location:0, 24。即紧贴菜单栏。

    长宽Size为:784, 25。即长度为784,宽度为25。

    其他属性默认。


    4. 添加状态栏StatusStrip控件

    同上,在左侧工具箱中找到StatusStrip控件并拖动到窗体中。

    菜单栏默认位置为窗体最下方。默认宽度22,长度为窗体内控件最大长度,默认名称为statusStrip1。属性中具体数据:

    位置Location为:0, 540。也就是状态栏的左上角位于窗体的(0, 540)处。

    大小Size为:784, 22。即长度784,宽度22。即最下边界为540+22 = 562处。

    整个窗体高600,去掉标题栏和边框,大约有562的高度用来容纳控件。

    其他属性默认。


    5. 调整pictureBox1的位置

    由于原先pictureBox1的位置为(0, 0),加上菜单栏和工具栏后,上面一部分被覆盖掉了,所以重新调整一下位置,让pictureBox1的上边界紧贴工具栏。

    通过计算菜单栏和工具栏的高度和,可得图片框的上边界为24+25 = 49,更改图片框的属性:

    位置Location为:0, 49。

    其他属性不变。


    6. 添加按钮Button控件

    打开左侧工具箱,找到Button控件,鼠标左键拖到窗体内右侧的空白处。位置随意。默认大小。默认名称为button1。

    再添加一个Button控件,位置随意,默认大小,默认名称为button2。

    更改按钮的显示文本。

    选中button1控件,在右下方的属性窗口中,找到Text属性,更改其值为:Show。

    选中button2控件,在右下方的属性窗口中,找到Text属性,更改其值为:Hide。


    上述完成后,运行的效果图为:



    7. 完善功能

    为实现下述功能,需要对pictureBox1.Image反复赋值,其图像为Bitmap b。前面的文件中,将b作为TriPaint_Load()函数的局部变量,为了实现在其他函数中反复调用,需要将其保存为全局变量。这样,在GlobalVars.cs中,把Bitmap b添加进去,代码如下:

            //位图b,为pictureBox1.Image使用的值
            private static Bitmap b = new Bitmap(250, 250);
            public static Bitmap B
            {
                get { return b; }
                set { b = value; }
            }

    注:由于pictureBox1为主窗体TriPaint的私有成员,其他类无法访问,所以初始化位图大小时用了具体的数值。若改动了pictureBox1的大小,要记得在此处也将大小改过来。。如果想要把pictureBox1的长宽属性改为public,可以使用委托的方法,或者在主窗口中新建一个类,将这个属性设为public。

    参考:

    http://social.microsoft.com/Forums/zh-CN/e7914cf9-7b5e-4508-a85c-8500f104d596/cform

    http://zhidao.baidu.com/link?url=Boy2Ece-mWVNEnLFggS_fykAfUtBXSuwMXilqSU2hcmNND5aSOeDlaoRKbs-MWnyR-MfTniFcVdZBCDY1qlcXK


    这样,GlobalVars.cs的最终代码为:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Drawing;
    
    namespace TriPaint_20131013
    {
        //修改这里
        public static class GlobalVars
        {
            //类似于#define宏定义,设置三个常量
            public const int POINTCNT = 50;//点数,POINTCNT <= XMAX - XMIN
            public const int XMAX = 200;//X轴最大值,也就是2π对应的值  
            public const int XMIN = 0;//X轴最小值
            public const double times = (XMAX - XMIN) / (2 * Math.PI - 0);//放大倍数
            public const double xInterval = (XMAX - XMIN) / (POINTCNT - 1);//i增量对应的data.X增量
            
            //类似于全局变量,可以重新赋值
            //坐标点变量
            private static Point[] data = new Point[POINTCNT];
            public static Point[] Data
            {
                get { return data; }
                set { data = value; }
            }
    
            //位图b,为pictureBox1.Image使用的值
            private static Bitmap b = new Bitmap(250, 250);
            public static Bitmap B
            {
                get { return b; }
                set { b = value; }
            }
        }
    }
    

    修改后,需要在TriPaint.cs中,把关于b的声明去掉,对创建g的代码进行修改:

                Graphics g = Graphics.FromImage(GlobalVars.B);//图像画布添加绘图

    另外,因为添加了按钮(菜单、工具)等功能,默认情况下,图片框中不显示绘制的图像,所以把给pictureBox1.Image初始赋值的那一条语句注释掉,即:

                //pictureBox1.Image = b;//图像框的图像为上述绘图生成的图像


    7.1 完善按钮功能

    a. 完善按钮button1的显示图片功能

    选中button1,也就是Show按钮,双击,则会实现:在主窗体的类(即TriPaint类)中添加button1_Click()事件函数,并将Show按钮的Click事件与函数button1_Click()关联起来。

    在此函数中添加如下代码:

            private void button1_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = GlobalVars.B;//显示图像b
                pictureBox1.Refresh();//刷新图片框
            }

    因为会返回修改Image的值,所以每个事件函数都要对pictureBox1刷新一下。


    b. 完善按钮button2的隐藏图片功能

    同上,选中button2,即Hide按钮,双击,主窗体类中自动添加button2_Click()事件函数。在此函数中添加如下代码:

            private void button2_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = null;//对Image的值置空,刷新后图像就消失了
                pictureBox1.Refresh();
            }

    7.2 完善菜单栏功能

    首先要添加菜单栏上的菜单。

    打开TriPaint.cs[设计]文件,选中菜单栏,会显示一个“请在此键入”的文本编辑框。


    在此文本框中输入“Show”,这样就向右弹出第二个一级菜单的文本编辑框,向下弹出此菜单的二级菜单文本输入框。


    由于我们这个例子的功能比较简单,只简单演示即可,不建立二级菜单,只建立两个一级菜单即可。

    在右方创建“Hide”菜单。



    a. 为Show菜单添加显示图像功能

    同按钮控件,双击Show菜单,即可在TriPaint中生成showToolStripMenuItem_Click()事件函数,自动关联Show菜单的Click事件。

    在此函数中添加同button1相同的代码:(直接复制即可)

            private void showToolStripMenuItem_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = GlobalVars.B;//显示图像b
                pictureBox1.Refresh();//刷新图片框
            }

    b. 为Hide菜单添加隐藏图像功能

    同上,双击Hide菜单,自动生成hideToolStripMenuItem_Click()函数,自动关联Hide菜单的Click事件,添加代码如下:

            private void hideToolStripMenuItem_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = null;//对Image的值置空,刷新后图像就消失了
                pictureBox1.Refresh();
            }

    注:可以把显示和隐藏做成TriPaint类的两个函数,然后在每个控件的事件函数中直接调用。此处由于代码比较短,可以直接这么写。

    如前面所提到的,如果按照全局变量的思想,在外部新建一个类,然后定义两个显示和隐藏图像的方法,也是可以的。但是由于控件属性为TriPaint类的私有成员,所以需要在类TriPaint中对Image属性进行public。由于控件的调用保护机制,使得外部函数只能通过委托的方式响应控件事件。

    这些可以从上文中的两个参考链接中找到实现的方法。下节可能会具体介绍一下。


    7.3 完善工具栏功能

    同上面的菜单栏。在TriPaint.cs[设计]文件中,选中工具栏toolStrip1。


    工具栏有多种显示样式。默认的第一种为图片,其他种类可以通过点击向下的小三角箭头选择,有Button、Label等等。我们选择默认的图片工具显示(鼠标直接点那个图标即可),这样连续生成两个,一字排开:


    要显示工具图片可以自定义,选中第一个工具图片,在右下方的属性窗口中,找到Image属性,通过右侧的浏览框选择想要更改的图片。

    图片大小默认为16*16,且为固定大小,其他图片无论大小都会缩放成16*16来显示。这里可以自己截两个桌面图标,然后挨个替换下来即可。(我截的是War3和qq的图标)



    a. 添加第一个工具的显示图像功能

    双击第一个工具的图标,会在TriPaint类中自动生成toolStripButton1_Click()事件函数,自动关联第一个工具的Click事件。添加显示图像代码:

            private void toolStripButton1_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = GlobalVars.B;//显示图像b
                pictureBox1.Refresh();//刷新图片框
            }

    b. 添加第二个工具的隐藏图像功能

    同上,双击第二个工具的图标,自动生成toolStripButton2_Click()事件函数,自动关联第二个工具的Click事件。添加代码如下:

            private void toolStripButton2_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = null;//对Image的值置空,刷新后图像就消失了
                pictureBox1.Refresh();
            }

    7.4 完善状态栏功能

    这里只做简单的演示,所以状态栏只用一行文本显示图像框中的图像是显示还是隐藏即可。

    在TriPaint.cs[设计]文件中,选中最下方的状态栏statusStrip1,点击小三角,选择第一个StatusLabel。


    此StatusLabel用于显示“Show”或“Hide”文本。默认下,此处填充的文本为toolStripStatusLabel1,并且此标签控件的名称也是toolStripStatusLabel1。需要我们手动修改默认显示的文本(控件名称不做修改),选中此StatusLabel,在右下方的属性框中,找到Text属性。因为默认情况下,图像是隐藏的,所以将此标签的初始文本设置为“Hide”,所以把Text的值改为Hide。(此时这个控件的名称仍旧叫做toolStripStatusLabel1,下面在程序中修改此标签显示的文本时会用到)


    状态栏所需的工作,实在图片框中的图片显示或隐藏发生更改后,显示当前的图像状态。所以控制状态栏显示内容的,是pictureBox1的Paint事件。

    在TriPaint.cs[设计]中,选中pictureBox1,在右下方的属性窗口中,点击事件视图,找到Paint属性:


    双击Paint属性,会在TriPaint类中自动生成pictureBox1_Paint()事件函数,并自动关联pictureBox1的Paint事件。在此函数中添加代码:

            private void pictureBox1_Paint(object sender, PaintEventArgs e)
            {
                if (pictureBox1.Image == null)//如果图像为空
                {
                    toolStripStatusLabel1.Text = "Hide";//则显示Hide
                }
                else//否则,即图像不为空,有具体的BMP位图
                {
                    toolStripStatusLabel1.Text = "Show";//则显示Show
                }
            }

    至此,修改结束。

    TriPaint.cs最终代码为:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace TriPaint_20131013
    {
        public partial class TriPaint : Form
        {
    
    
            public TriPaint()
            {
                InitializeComponent();
                //在这里添加代码
                //对数据进行处理
                for (int i = 0; i < GlobalVars.POINTCNT; i++)
                {
                    GlobalVars.Data[i].X = (int)(i * GlobalVars.xInterval);//i对应的data.X
                    GlobalVars.Data[i].Y = (int)(GlobalVars.times * Math.Sin(GlobalVars.Data[i].X / GlobalVars.times));//sin函数求值
                    GlobalVars.Data[i].Y = (int)(GlobalVars.Data[i].Y + GlobalVars.times * 1);//Y轴向正向平移1,即1*times,令最高点(也就是3π/2对应的-1点)的值为0
                }
    
            }
    
            private void TriPaint_Load(object sender, EventArgs e)
            {
                //Graphics g = this.CreateGraphics();//画板
                //this.Show();//显示
                //Bitmap b = new Bitmap(pictureBox1.Width, pictureBox1.Height);//新建图像画布
                Graphics g = Graphics.FromImage(GlobalVars.B);//图像画布添加绘图
    
                //坐标系平移镜像
                g.TranslateTransform(0, 250);//向y正向平移300
                g.ScaleTransform(1, -1);//关于x轴镜像
    
                Pen p = new Pen(Color.Blue, 1);//画笔
    
                g.DrawLines(p, GlobalVars.Data);//多点绘图,直线连接
    
                //pictureBox1.Image = b;//图像框的图像为上述绘图生成的图像
    
                //释放绘图所占用资源
                p.Dispose();
                g.Dispose();
                //b.Dispose();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = GlobalVars.B;//显示图像b
                pictureBox1.Refresh();//刷新图片框
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = null;//对Image的值置空,刷新后图像就消失了
                pictureBox1.Refresh();
            }
    
            private void showToolStripMenuItem_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = GlobalVars.B;//显示图像b
                pictureBox1.Refresh();//刷新图片框
            }
    
            private void hideToolStripMenuItem_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = null;//对Image的值置空,刷新后图像就消失了
                pictureBox1.Refresh();
            }
    
            private void toolStripButton1_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = GlobalVars.B;//显示图像b
                pictureBox1.Refresh();//刷新图片框
            }
    
            private void toolStripButton2_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = null;//对Image的值置空,刷新后图像就消失了
                pictureBox1.Refresh();
            }
    
            private void pictureBox1_Paint(object sender, PaintEventArgs e)
            {
                if (pictureBox1.Image == null)//如果图像为空
                {
                    toolStripStatusLabel1.Text = "Hide";//则显示Hide
                }
                else//否则,即图像不为空,有具体的BMP位图
                {
                    toolStripStatusLabel1.Text = "Show";//则显示Show
                }
            }
    
        }
    }

    运行,分别点击Show菜单、工具、按钮和Hide菜单、工具、按钮,查看窗体显示。

    结果为:






    展开全文
  • 什么是开始菜单 -电脑资料

    千次阅读 2021-07-26 08:03:28
    认识开始菜单“开始”菜单是由用户账户区、固定项目列表、最常使用的程序列表、所有程序列表、系统文件夹列表、系统设置项目列表以及帮助、搜索、运行区和关闭、注销区组成,每个部分都有不同的功能, 认识开始菜单1...
  • angular自定义组件-----侧边菜单栏

    千次阅读 2018-02-11 10:43:24
    首先申明一下我用的代码编辑器是webstorm,在webstorm里打开网页调试的时候它自动模拟一个服务器环境,如果是sublime直接打开报错,直接双击HTML文件打开也出错,如果你自己有配置wamp环境就把文件放到www...
  • Android 侧滑菜单栏

    千次阅读 2014-05-21 00:21:22
    今天讲解的是侧滑菜单栏的实现,需要预先明白的知识点有: 1:ViewTreeOb
  • 3.1、菜单栏及菜单的界面定义操作 在Qt Designer中,如果主窗口无菜单通过在主窗口中鼠标右键的弹出菜单可以给主窗口创建菜单栏,如图: 如果已经创建菜单栏,通过鼠标右键点击菜单条的弹出菜单可以删除菜单,如图...
  • Android 高仿新浪微博底部导航,实现双击首页Tab,页面的ListView滚动、刷新等等...
  • 指的是应用程序定义的任务图标的标识符,简单的时候就是图片图标的ID,这里的ID你可以进入工程下的ResourceView中找到Icon文件夹下的图标,里面的ID号就是我们现在要赋值的具体ID,Shell_NotifyIcon函数调用时,...
  • 在iOS下,双击屏幕某些地方,滚动条自动向上走一段。 当用微信看h5的时候,拖拽到底部,漏出来,微信自带下面的灰黑色皮肤。 用js解决一下吧,这俩问题很类似,总结到一起了。 ———-特别注意,安卓没有发生...
  • PB中的菜单属性及使用

    千次阅读 2014-07-02 17:31:41
    菜单条-MenuBar、菜单项-MenuItem、级联菜单(子菜单)-SubMenu 菜单项(MenuItem)是菜单中最基本的元素,只要有文字内容的就是菜单项。菜单条(MenuBar)是菜单中级别最高的菜单项的总称,也叫做菜单标题。菜单条的内容...
  • Unity3D中创建自定义菜单

    千次阅读 2017-12-23 03:00:18
    刚接触Unity3D不久,由于本屌记性不好,有些东西需要写下来才能安心,方便往后查阅。不足之处请多多包涵和指教。...我们可以看到菜单栏上都是系统自带的菜单,那么如何添加自己定义的菜单呢?双击脚本,用编辑
  • 1.我曾经听一位快十年前端大佬说过一句话,就是能用css实现的动画,就用css不要用js去实现 因为在渲染上css肯定比js效果更好我用jquery曾经实现过鼠标点击 出现下拉菜单 有点和面包屑 和标签页导航类似 后来参加工作...
  • Visual Basic .NET 教程模块五菜单栏、工具栏、状态栏 能力目标:能够设计、创建和使用菜单、工具栏和状态栏 知识目标:掌握菜单控件、工具栏控件和状态栏控件常用的属性、方法和事件   ...
  • 其他的我的备注已经注释的很详细了,另外就是之前提到的关于拖动和点击事件以及双击事件冲突的问题,还是直接上代码: 点击事件: 拖动事件(内含双击事件): 最后需要注意的是一定要return ...
  • 那么,什么是窗口呢?举个简单的例子,比如双击我的电脑之后,就打开了一个窗口,如下图所示。下面,就让我们一起来学习关于电脑窗口的相关知识吧。1、窗口的组成1)边框和工作区 每个窗口都有四个边,将鼠标移到边上...
  • 任务打印机图标不见 - 卡饭网

    千次阅读 2020-12-24 18:18:37
    Win10任务QQ图标不见了如何将它显示出来Win10任务QQ图标不见了如何将它显示出来 在Win10系统中,任务QQ图标默认是隐藏的,这给QQ用户带来了不便。那么Win10 QQ图标不显示怎么办?下面小编为大家详细介绍下Win10...
  • Qt自定义标题

    千次阅读 热门讨论 2018-11-22 16:31:24
    这里只讲标题的创建方法,透明效果与样式我在下一次介绍。为了让大家能够看清楚效果,上图是我以桌面作为背景。 相信大家可能已经查了很多资料,或者说刚看到我的这篇博客,不过都没关系,因为,看完我这篇,...
  • 文章目录一、IDEA的view视图二、解决办法2.1 双击shift 输入view2.2 IDEA的本地用户配置文件三、额外界面设置四、总结 大早上的折腾了一下IDEA主菜单中的view->Appearance,成功把主菜单搞没了。后面通过...
  • 双击标题栏会进行窗体的最大化/还原,所以我们需要重写此事件进行控制。 eventFilter 事件过滤器,这里被监听的窗体为标题所在的窗体,所以当窗体标题、图标等信息发生改变时,标题也应该随之改变。 最好...
  • 记录解决Win10底部任务转圈圈问题的过程问题描述导入 问题描述 出现该问题的现象如下所示: 导入 如果你想加载一篇你写过的.md文件,在上方工具可以选择导入功能进行对应扩展名的文件导入, 继续你的创作。 ...
  • Multisim函数发生器设置问题

    万次阅读 多人点赞 2020-03-08 13:33:52
    最近在使用multisim进行仿真,需要用到函数发生器产生信号,但是用示波器观察发现最终显示的信号和预期不符,这是因为对函数发生器的使用不了解。本文对multisim的函数发生器和示波器的使用进行说明,并以产生1khz,...
  • OpenLayers 3之添加地图鼠标右键菜单

    千次阅读 2016-12-23 17:32:06
    openlayers 初始化页面过程鼠标右键菜单具体实现 对 html 元素添加 contextmenu 事件获取地图相应的点击坐标地图相应位置添加菜单 菜单隐藏总结  添加右键菜单,首先我们要监听鼠标右键点击的操作,我们知道鼠标...
  • 基于Matlab的信号发生器GUI设计

    千次阅读 2020-11-30 18:01:06
    一、应用背景 传统的台式函数信号发生器具有体积庞大,接口不灵活,波形固定,价格昂贵等缺点,针对此现状,本次根据老师布置的作业完成一个简单的数字信号发生器,可以产生不同幅值,频率的白噪声、正弦波、锯齿波...
  • 双击word,excel等office文档很慢的解决方法大全。 1,在资源管理器--工具--文件夹选项--文件类型中选中扩展名为DOC,点击"高级"-选择"打开"-点击"编辑"-在"用于执行编辑的应用程序中"在/n的后而加上"%1"(注:一定要...
  • Android ListView两种长按弹出菜单方式

    万次阅读 2012-08-22 14:11:39
    * 知识点1:ListView item:两种长按弹出菜单方式 * 知识点2:ListView SimpleAdapter的使用 * 知识点 3:在java代码中创建一个ListView */ -----------------------------------------------------
  • 计算机考试 word

    千次阅读 2021-07-10 03:56:22
    2006年教师职称计算机考试试题(第5章)第五章Word 2000文字处理软件1...D显示并打印指定的文档内容2、关于WORD的文件操作,正确的是(C)A WORD文档缺省的扩展名是.XLSB在“文件”菜单的底部所显示的文件是正在使用的文...
  • 当使用AngularJS和Bootstrap时,会发生菜单栏navbar控件 需要点击两下才能打开的问题。解决的方法就是在页面加载后,执行如下语句: // 防止下拉菜单需要双击的bug $('.dropdown-toggle').click(function(e) { ...
  • DevExpress GridView 列标题点击事件

    千次阅读 2016-04-23 12:22:18
    "当鼠标在标题两列之间的时候,鼠标的样式会发生变化" ); } else { //这里面应该是点击的列标题而不是两列之间的那部分 } } 作者:jiankunking 出处: http://blog.csdn.net/jiankunking

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,886
精华内容 9,154
关键字:

双击菜单栏会发生什么