-
2020-05-29 23:19:22
用CSS样式对ul、li标签进行控制,实现竖向二级菜单。
HTML代码:
<div class="sidemenu"> <ul> <li><a href="javascript:void(0);" class="one_level_menubar">一级菜单</a> <ul class="two_level_menubar"> <li>-<a href="javascript:void(0);">二级菜单</a></li> <li>-<a href="javascript:void(0);">二级菜单</a></li> <li>-<a href="javascript:void(0);">二级菜单</a></li> <li>-<a href="javascript:void(0);">二级菜单</a></li> </ul> </li> <li><a href="javascript:void(0);" class="one_level_menubar">一级菜单</a> <ul class="two_level_menubar"> <li>-<a href="javascript:void(0);">二级菜单</a></li> <li>-<a href="javascript:void(0);">二级菜单</a></li> <li>-<a href="javascript:void(0);">二级菜单</a></li> <li>-<a href="javascript:void(0);">二级菜单</a></li> </ul> </li> <li><a href="javascript:void(0);" class="one_level_menubar">一级菜单</a> <ul class="two_level_menubar"> <li>-<a href="javascript:void(0);">二级菜单</a></li> <li>-<a href="javascript:void(0);">二级菜单</a></li> <li>-<a href="javascript:void(0);">二级菜单</a></li> <li>-<a href="javascript:void(0);">二级菜单</a></li> </ul> </li> <li><a href="javascript:void(0);" class="one_level_menubar">一级菜单</a> <ul class="two_level_menubar"> <li>-<a href="javascript:void(0);">二级菜单</a></li> <li>-<a href="javascript:void(0);">二级菜单</a></li> <li>-<a href="javascript:void(0);">二级菜单</a></li> <li>-<a href="javascript:void(0);">二级菜单</a></li> </ul> </li> <li><a href="javascript:void(0);" class="one_level_menubar">一级菜单</a> <ul class="two_level_menubar"> <li>-<a href="javascript:void(0);">二级菜单</a></li> <li>-<a href="javascript:void(0);">二级菜单</a></li> <li>-<a href="javascript:void(0);">二级菜单</a></li> <li>-<a href="javascript:void(0);">二级菜单</a></li> </ul> </li> </ul> </div>
CSS部分:
.sidemenu{ width:140px; height:850px; overflow:auto; color:#000080; float:left; line-height:30px; font-size:18px; } div.sidemenu ul { list-style:none; margin: 0px; padding: 0px; } div.sidemenu ul li { margin-left:5px; } .one_level_menubar { font-weight:bold; } .two_level_menubar { display:none; margin-left:8px; font-size:14px; } .two_level_menubar li { border-left:1px dashed #000000; } div.sidemenu ul li a, div.menu ul li a:visited { color: #000000; text-decoration: none; white-space: nowrap; /* margin-left:10px; */ text-align: center; } div.sidemenu ul li a:hover { color: #b22222; }
JavaScript/JQuery部分:
$(document).ready(function(){ $(".one_level_menubar").click(function(){ $(this).next().slideToggle(); $(this).parent().siblings().children("ul").slideUp(); }); });
实现效果:
点击一级菜单,展开二级菜单。
更多相关内容 -
CSS技巧 使用标签来创建导航菜单(滑动门教程)
2020-09-25 13:24:22利用标签来创建导航菜单,是一个比较流行的方法.那就跟木木一起来学一下如何使用标签来创一个导航菜单. -
Dreamweaver网页怎么制作一个带有列表值的下拉菜单?
2020-09-24 16:50:28Dreamweaver网页怎么制作一个带有列表值的下拉菜单?Dreamweaver设计网页的时候,需要添加一个下拉菜单,并且给下拉菜单添加列表值,下面我们就来看看详细的教程,需要的朋友可以参考下 -
Dreamweaver怎么创建下拉菜单
2021-01-17 18:32:01一、在Dreamweaver中创建弹出式菜单1. 点击鼠标,将光标放在表单框线内,点击“插入”菜单,选择“表单”项,在弹出的子菜单中选择“选择(列表/菜单)”命令。或者在“插入”面板中选择“表单”项,点击“选择(列表/...一、在Dreamweaver中创建弹出式菜单
1. 点击鼠标,将光标放在表单框线内,点击“插入”菜单,选择“表单”项,在弹出的子菜单中选择“选择(列表/菜单)”命令。
或者在“插入”面板中选择“表单”项,点击“选择(列表/菜单)”图标,如下图所示:
点击“窗口”菜单,选择“插入”项,可以打开“插入”面板。
2. 点击“选择(列表/菜单)”图标后,弹出“输入标签辅助功能属性”对话框,在对话框中设置后,单击“确定”按钮,“选择(列表/菜单)”出现在文档中。
3. 在文档中点击“选择(列表/菜单)”表单控件,如下图所示:
在“代码”视图中可以查看源代码:
4. 打开选择(列表/菜单)“属性”面板,如下图所示:
5. “选择”项:输入名称。name属性。
6. “类型”项:选择菜单。
7. “列表值”按钮:点击“列表值”按钮添加菜单选项,出现“列表值”对话框,如下图所示:
8. 将光标放在“项目标签”列表中,输入需要在列表中出现的文本。
9. 在“值”列表中输入选取该项目时要发送给服务器的文本或数据。value属性。
10. 如果还要添加其他项目,点击“+”按钮,然后重复第8和第9步。如果选择某一项,点击“-”按钮,即可删除那一项。
11. 单击向上、向下按钮对项目进行排序。
12. 添加项目结束时,点击“确定”按钮关闭“列表值”对话框。
13. 在“初始化时选定”文本框中选择该菜单的默认列表项。selected属性。
14. 在“代码”视图中可以查看源代码:
网页制作
网络编程
二、提示
将光标定位到表单的红色虚线围成的框内,按回车(Enter)键,可以添加多个弹出式菜单。
-
javaFX学习之Menu下创建子菜单及菜单项的例子
2022-02-10 15:34:29使用RadioMenuItem来创建子菜单的菜单项。将RadioMenuItem类型菜单项添加到ToggleGroup(互斥切换组)类型对象中,使各个RadioMenuItem类型菜单项的选中是相互排斥的效果 本例子实现: 通过setUserData()为每...使用RadioMenuItem来创建子菜单的菜单项。将RadioMenuItem类型菜单项添加到ToggleGroup(互斥切换组)类型对象中,使各个RadioMenuItem类型菜单项的选中是相互排斥的效果
本例子实现:
通过setUserData()为每个RadioMenuItem定义了一个视觉特效。当ToggleGroup中的菜单项被选中时,对应的特效就会被应用在图片上。当NoEffects菜单项被选中时,setEffect()方法被赋值为null,没有特效应用在图片上
import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.event.ActionEvent; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.effect.DropShadow; import javafx.scene.effect.Effect; import javafx.scene.effect.Glow; import javafx.scene.effect.SepiaTone; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.VBox; import javafx.stage.Stage; import java.util.AbstractMap.SimpleEntry; import java.util.Map.Entry; public class MenuSample extends Application { final PageData[] pages = new PageData[]{ new PageData("标题一", "描述一", "名称一"), new PageData("标题二", "描述二", "名称二"), new PageData("标题三", "描述三", "名称三"), new PageData("标题", "描述", "名称") }; final String[] viewOptions = new String[]{ "标题", "二项式", "图片", "描述" }; final Entry<String, Effect>[] effects = new Entry[]{//Entry类型数组对象的初始化 new SimpleEntry<>("褐色特效", new SepiaTone()),//创建一个深褐色特效 用SimpleEntry类型对象保存,key是String 而value 是特效对象 new SimpleEntry<>("发光特效", new Glow()),//创建一个发光特效,用SimpleEntry类型对象保存,key是String 而value 是特效对象 new SimpleEntry<>("阴影特效", new DropShadow())//创建一个阴影特效,用SimpleEntry类型对象保存,key是String 而value 是特效对象 }; final ImageView pic = new ImageView();//创建视图显示区域 final Label name = new Label();//创建标签对象 final Label binName = new Label();//创建标签对象 final Label description = new Label();//创建标签对象 private int currentIndex = -1;//当前下标值的初始化设置 public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) { stage.setTitle("Menu例子"); Scene scene = new Scene(new VBox(), 400, 350);//创建一个场景对象,并将场景上挂载一个垂直盒子Vbox布局对象 final VBox vbox = new VBox();//创建一个垂直布局对象 vbox.setAlignment(Pos.CENTER);//设置vbox对象对齐方式 vbox.setSpacing(10);//设置vbox对象布局的元素之间的空间距离 vbox.setPadding(new Insets(0, 10, 0, 10));//设置Vbox对象内边距 vbox.getChildren().addAll(name, binName, pic, description);//vbox布局器中要添加的被布局元素对象(用vbox对象布局相关Node类型Label标签型对象和ImageView类型对象) shuffle();//清晰复原程序 MenuBar menuBar = new MenuBar();//创建一个MenuBar类型对象 // --- Menu File Menu menuFile = new Menu("Menu选择图片"); // --- Menu Edit Menu menuEdit = new Menu("Menu图片编辑"); // --- Menu View Menu menuView = new Menu("Menu菜单三"); //将上文创建的三个Menu对象添加(镶嵌)到MenuBar对象上去 menuBar.getMenus().addAll(menuFile, menuEdit, menuView);//Menu类型对象都是要镶嵌在MenuBar对象上的 Menu menuEffect = new Menu("图片特效");//创建一个菜单(后续作为子菜单) final ToggleGroup groupEffect = new ToggleGroup();//创建一个互斥切换组对象 for (Entry<String, Effect> effect : effects) {//遍历保存了图形特效的List<SimpleEntry>类型对象 RadioMenuItem itemEffect = new RadioMenuItem(effect.getKey());//创建一个RadioMenuItem类型菜单选项对象 itemEffect.setUserData(effect.getValue());//将从SimpleEntry类型对象中获取的vlaue值(Effect类型图像特效对象)作为用户选择数据项内容设置给RadioMenuItem类型对象的用户选择数据内容 itemEffect.setToggleGroup(groupEffect);//将RadioMenuItem类型对象添加到一个互斥组对象中去 menuEffect.getItems().add(itemEffect);//将RadioMenuItem类型对象作为选项挂载到前文定义的 图片特效子菜单中 } //No Effects菜单 final MenuItem noEffects = new MenuItem("无特效");//创建一个普通菜单选项MenuItem类型对象 noEffects.setOnAction((ActionEvent t) -> {//给上文定义的菜单选项对象添加交互事件处理回调函数 pic.setEffect(null);//将ImageView类型对象pic的特效设置为null groupEffect.getSelectedToggle().setSelected(false);//将互斥组ToggleGroup类型对象groupEffect的被选中项的对象对应的选中状态设置为false未选状态 }); //处理菜单项的选中事件 groupEffect.selectedToggleProperty().addListener(new ChangeListener<Toggle>() {//ToggleGroup类型对象的互斥选项,选项选中改变交互事件处理回调函数的编写 public void changed(ObservableValue<? extends Toggle> ov, Toggle old_toggle, Toggle new_toggle) { if (groupEffect.getSelectedToggle() != null) { Effect effect = (Effect) groupEffect.getSelectedToggle().getUserData();//获取切换组对象ToggleGroup 中选中的互斥选项对象对应的用户选中数据内容,本例中将选中数据内容转换成Effect类型图像特效对象 pic.setEffect(effect);//给ImageView类型对象pic添加图形效果 } } }); //ToggleGroup类型对象的互斥选项,选项选中改变交互事件处理回调函数的编写 groupEffect.selectedToggleProperty().addListener( (ObservableValue<? extends Toggle> ov, Toggle old_toggle, Toggle new_toggle) -> { if (groupEffect.getSelectedToggle() != null) { //获取切换组对象ToggleGroup类型groupEffect对象 中选中的互斥选项对象对应的用户选中数据内容,本例中将选中数据内容转换成Effect类型图像特效对象 Effect effect = (Effect) groupEffect.getSelectedToggle().getUserData(); pic.setEffect(effect);//给ImageView类型对象pic添加图形效果对象effect } }); //向Edit菜单添加菜单项 menuEdit.getItems().addAll(menuEffect, noEffects);//向图像编辑主菜单添加挂载对应的子菜单和菜单选项 ((VBox) scene.getRoot()).getChildren().addAll(menuBar, vbox);//scene对象的根节点元素上添加上文定义的menuBar对象和vbox对象,从场景对象scene对象上获取Vbox类型布局对象,并将前文定义的MenuBar类型对象添加到Vbox布局对象上去 stage.setScene(scene);//舞台上添加场景 stage.show();//舞台show } private void shuffle() {//洗牌程序(清晰复原程序) int i = currentIndex; while (i == currentIndex) { i = (int) (Math.random() * pages.length); } pic.setImage(pages[i].image);//图片视图区域价值图片 name.setText(pages[i].name);//label添加文字 binName.setText("(" + pages[i].binNames + ")");//label添加文字 description.setText(pages[i].description);//label对象添加文字 currentIndex = i; } private class PageData {//自定义的类似于pojo类型 public String name; public String description; public String binNames; public Image image; public PageData(String name, String description, String binNames) { this.name = name; this.description = description; this.binNames = binNames; image = new Image(getClass().getResourceAsStream("archimedes.jpg"));//创建并加载一个图片对象 } } }
————————————
适当的时机禁用与启用 无特效选项
import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.event.ActionEvent; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.effect.DropShadow; import javafx.scene.effect.Effect; import javafx.scene.effect.Glow; import javafx.scene.effect.SepiaTone; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.VBox; import javafx.stage.Stage; import java.util.AbstractMap.SimpleEntry; import java.util.Map.Entry; public class MenuSample extends Application { final PageData[] pages = new PageData[]{ new PageData("标题一", "描述一", "名称一"), new PageData("标题二", "描述二", "名称二"), new PageData("标题三", "描述三", "名称三"), new PageData("标题", "描述", "名称") }; final String[] viewOptions = new String[]{ "标题", "二项式", "图片", "描述" }; final Entry<String, Effect>[] effects = new Entry[]{//Entry类型数组对象的初始化 new SimpleEntry<>("褐色特效", new SepiaTone()),//创建一个深褐色特效 用SimpleEntry类型对象保存,key是String 而value 是特效对象 new SimpleEntry<>("发光特效", new Glow()),//创建一个发光特效,用SimpleEntry类型对象保存,key是String 而value 是特效对象 new SimpleEntry<>("阴影特效", new DropShadow())//创建一个阴影特效,用SimpleEntry类型对象保存,key是String 而value 是特效对象 }; final ImageView pic = new ImageView();//创建视图显示区域 final Label name = new Label();//创建标签对象 final Label binName = new Label();//创建标签对象 final Label description = new Label();//创建标签对象 private int currentIndex = -1;//当前下标值的初始化设置 public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) { stage.setTitle("Menu例子"); Image image = new Image("https://www.dllg56.com/qt/img/logo-sing.png"); stage.getIcons().add(image); Scene scene = new Scene(new VBox(), 400, 350);//创建一个场景对象,并将场景上挂载一个垂直盒子Vbox布局对象 final VBox vbox = new VBox();//创建一个垂直布局对象 vbox.setAlignment(Pos.CENTER);//设置vbox对象对齐方式 vbox.setSpacing(10);//设置vbox对象布局的元素之间的空间距离 vbox.setPadding(new Insets(0, 10, 0, 10));//设置Vbox对象内边距 vbox.getChildren().addAll(name, binName, pic, description);//vbox布局器中要添加的被布局元素对象(用vbox对象布局相关Node类型Label标签型对象和ImageView类型对象) shuffle();//清晰复原程序 MenuBar menuBar = new MenuBar();//创建一个MenuBar类型对象 // --- Menu File Menu menuFile = new Menu("Menu选择图片"); // --- Menu Edit Menu menuEdit = new Menu("Menu图片编辑"); // --- Menu View Menu menuView = new Menu("Menu菜单三"); //将上文创建的三个Menu对象添加(镶嵌)到MenuBar对象上去 menuBar.getMenus().addAll(menuFile, menuEdit, menuView);//Menu类型对象都是要镶嵌在MenuBar对象上的 Menu menuEffect = new Menu("图片特效");//创建一个菜单(后续作为子菜单) final ToggleGroup groupEffect = new ToggleGroup();//创建一个互斥切换组对象 for (Entry<String, Effect> effect : effects) {//遍历保存了图形特效的List<SimpleEntry>类型对象 RadioMenuItem itemEffect = new RadioMenuItem(effect.getKey());//创建一个RadioMenuItem类型菜单选项对象 itemEffect.setUserData(effect.getValue());//将从SimpleEntry类型对象中获取的vlaue值(Effect类型图像特效对象)作为用户选择数据项内容设置给RadioMenuItem类型对象的用户选择数据内容 itemEffect.setToggleGroup(groupEffect);//将RadioMenuItem类型对象添加到一个互斥组对象中去 menuEffect.getItems().add(itemEffect);//将RadioMenuItem类型对象作为选下挂载到前文定义的 图片特效子菜单中 } //No Effects菜单 final MenuItem noEffects = new MenuItem("无特效");//创建一个普通菜单选项MenuItem类型对象 noEffects.setDisable(true);// 初始化无特效菜单选项是被禁用的 noEffects.setOnAction((ActionEvent t) -> {//给上文定义的菜单选项对象添加交互事件处理回调函数 pic.setEffect(null);//将ImageView类型对象pic的特效设置为null groupEffect.getSelectedToggle().setSelected(false);//将互斥组ToggleGroup类型对象groupEffect的被选中项的对象对应的选中状态设置为false未选状态 noEffects.setDisable(true);//引用无特效选项 }); //处理菜单项的选中事件 groupEffect.selectedToggleProperty().addListener(new ChangeListener<Toggle>() {//ToggleGroup类型对象的互斥选项,选项选中改变交互事件处理回调函数的编写 public void changed(ObservableValue<? extends Toggle> ov, Toggle old_toggle, Toggle new_toggle) { if (groupEffect.getSelectedToggle() != null) { Effect effect = (Effect) groupEffect.getSelectedToggle().getUserData();//获取切换组对象ToggleGroup 中选中的互斥选项对象对应的用户选中数据内容,本例中将选中数据内容转换成Effect类型图像特效对象 pic.setEffect(effect);//给ImageView类型对象pic添加图形效果 } } }); //ToggleGroup类型对象的互斥选项,选项选中改变交互事件处理回调函数的编写 groupEffect.selectedToggleProperty().addListener( (ObservableValue<? extends Toggle> ov, Toggle old_toggle, Toggle new_toggle) -> { if (groupEffect.getSelectedToggle() != null) { //获取切换组对象ToggleGroup类型groupEffect对象 中选中的互斥选项对象对应的用户选中数据内容,本例中将选中数据内容转换成Effect类型图像特效对象 Effect effect = (Effect) groupEffect.getSelectedToggle().getUserData(); pic.setEffect(effect);//给ImageView类型对象pic添加图形效果对象effect noEffects.setDisable(false);//启用无特效选项 }else { noEffects.setDisable(true);//禁用无特效选项 } }); //向Edit菜单添加菜单项 menuEdit.getItems().addAll(menuEffect, noEffects);//向图像编辑主菜单添加挂载对应的子菜单和菜单选项 ((VBox) scene.getRoot()).getChildren().addAll(menuBar, vbox);//scene对象的根节点元素上添加上文定义的menuBar对象和vbox对象,从场景对象scene对象上获取Vbox类型布局对象,并将前文定义的MenuBar类型对象添加到Vbox布局对象上去 stage.setScene(scene);//舞台上添加场景 stage.show();//舞台show } private void shuffle() {//洗牌程序(清晰复原程序) int i = currentIndex; while (i == currentIndex) { i = (int) (Math.random() * pages.length); } pic.setImage(pages[i].image);//图片视图区域价值图片 name.setText(pages[i].name);//label添加文字 binName.setText("(" + pages[i].binNames + ")");//label添加文字 description.setText(pages[i].description);//label对象添加文字 currentIndex = i; } private class PageData {//自定义的类似于pojo类型 public String name; public String description; public String binNames; public Image image; public PageData(String name, String description, String binNames) { this.name = name; this.description = description; this.binNames = binNames; image = new Image(getClass().getResourceAsStream("archimedes.jpg"));//创建并加载一个图片对象 } } }
-
Qt--纯代码创建简易菜单窗口(附详细讲解)
2019-08-14 21:40:17添加菜单项:菜单项指的是如图所示的对话框里的东西 模态对话框:模态对话框打开时,无法操作其他窗口; 非模态对话框:模态对话框打开时,可以操作其他窗口; 问题对话框:点击后弹出的对话框,样式为: ...先挂一张效果图:
添加的部件:
对话框:
- 模态对话框
- 非模态对话框
- 问题对话框
- 关于对话框
- 文件对话框
工具栏
状态栏
文本编辑器
浮动窗口
概念介绍:
添加菜单项:菜单项指的是如图所示的对话框里的东西
- 模态对话框:模态对话框打开时,无法操作其他窗口;
- 非模态对话框:模态对话框打开时,可以操作其他窗口;
问题对话框:点击后弹出的对话框,样式为:
关于对话框:点击之后弹出的对话框,样式如图:
Lambda表达式,匿名函数对象
C++11增加的新特性,项目文件:CONFIG+=C++11
Qt配合信号一起使用,非常方便
正常的信号槽 connect函数的用法:connect(信号发出者,信号发出者作用::操作,接收者,槽函数作用域::槽函数)
Lambda表达式下的用法:
connect(信号发出者,信号发出者作用::操作, [=]() { 正常槽函数中的操作 } )
例如:
详细讲解:
项目创建:除图示外都是下一步
pro工程文件添加代码:(因为一会会用到Lambda表达式)main.cpp里面内容不变
CONFIG += C++11
main.cpp里面内容不变
以下为MainWindow.cpp文件下的操作:
MainWindow.cpp文件中的头文件#include "MainWindow.h" #include <QMenuBar> //菜单栏 #include <QMenu> //菜单 #include <QAction> //菜单项 #include <QDebug> //输出 #include <QToolBar> // 工具栏 #include <QPushButton> //按钮 #include <QStatusBar> //状态栏 #include <QLabel> //标签 #include <QTextEdit> //文本编辑区 #include <QDockWidget> //浮动窗口 #include <QDialog> //对话框 #include <QMessageBox> //标准对话框
创建菜单栏:
//菜单栏 QMenuBar *mBar = menuBar(); //添加菜单 QMenu *pFile = mBar->addMenu("对话框");
创建模态对话框:
QAction *p1 = pFile->addAction("模态对话框"); connect(p1,&QAction::triggered, [=]() { QDialog dlg; dlg.exec(); qDebug() << "模态对话框打开时,无法操作其他"; } );
pFile->addSeparator(); //添加分割线
创建非模态对话框:
QAction *p2 = pFile->addAction("非模态对话框"); connect(p2,&QAction::triggered, [=]() { QDialog *dlg = new QDialog(this); dlg->setAttribute(Qt::WA_DeleteOnClose); //防止内存泄漏,此函数的作用为关闭对话框时自动释放 dlg->show(); qDebug() << "非模态对话框打开时,可以操作其他"; } ); pFile->addSeparator(); //添加分割线
创建关于对话框:
pFile->addSeparator(); //添加分割线 QAction *p3 = pFile->addAction("关于对话框"); connect(p3,&QAction::triggered, [=]() { QMessageBox::about(this,"about","充值成功"); //about(父类,标题名,对话框内容); } ); pFile->addSeparator(); //添加分割线
创建问题对话框:
QAction *p4 = pFile->addAction("问题对话框"); connect(p4,&QAction::triggered, [=]() { QMessageBox::question(this,"question","是否充值"); //question(父类,标题名,对话框内容); } );
工具栏: 菜单项的快捷方式:
第一种创建方式:直接把对话框内的对象传进去,直接显示文字,缺乏美感
QToolBar *toolBar = addToolBar("toolBar"); //工具栏添加快捷键 toolBar->addAction(p1);
第二种创建方式:以按钮的方式创建
QPushButton *b = new QPushButton(this); b->setText("新建"); toolBar->addWidget(b); connect(b,&QPushButton::clicked,this,&MainWindow::MySlot);
状态栏:菜单栏底部
第一种方式:利用label标签的方式
QStatusBar *sBar = statusBar(); QLabel *MyLabel = new QLabel(this); MyLabel->setText("第一种添加方式 "); sBar->addWidget(MyLabel);
第二种方式:直接传参
sBar->addWidget(new QLabel("addwidget从左往右添加",this)); sBar->addPermanentWidget(new QLabel("addPermanentWidget从右往左添加",this));
文本编辑区:
QTextEdit *MyQTE = new QTextEdit(this); //this当前父类 setCentralWidget(MyQTE);
浮动窗口:可以移动的窗口,并可以贴在上下窗体
QDockWidget *dock = new QDockWidget(this); addDockWidget(Qt::RightDockWidgetArea,dock); //给浮动窗口添加文本编辑区 QTextEdit *MyDockQTE = new QTextEdit(this); dock->setWidget(MyDockQTE);
更改弹出对话框的按钮名称:
在QT的帮助文档中QMessageBox的Constant:
所以你可以通过查看帮助文档找到自己合适的按钮
将问题对话框的的yes,no改为ok,cancel
文件对话框:
open文件夹,显示下拉框,并返回当前文件的路径,打印出来
pFile->addSeparator(); //添加分割线 QAction *p5 = pFile->addAction("文件对话框"); connect(p5,&QAction::triggered, [=]() { QString path = QFileDialog::getOpenFileName( this, "open", "../", "souce(*.cpp *.h);;" "Text(*.txt);;" "all(*.*)" ); qDebug() << path; } );
下拉框:
路径打印:
源代码:
其中main函数不变,pro工程文件添加刚刚说的代码;
MainWindow.h文件:
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ~MainWindow(); void MySlot(); }; #endif // MAINWINDOW_H
MainWindow.cpp文件:
#include "MainWindow.h" #include <QMenuBar> //菜单栏 #include <QMenu> //菜单 #include <QAction> //菜单项 #include <QDebug> //输出 #include <QToolBar> // 工具栏 #include <QPushButton> //按钮 #include <QStatusBar> //状态栏 #include <QLabel> //标签 #include <QTextEdit> //文本编辑区 #include <QDockWidget> //浮动窗口 #include <QDialog> //对话框 #include <QMessageBox> //标准对话框 #include <QFileDialog> //文件对话框 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { //菜单栏 QMenuBar *mBar = menuBar(); //添加菜单 QMenu *pFile = mBar->addMenu("对话框"); //添加菜单项,动作 //模态对话框 QAction *p1 = pFile->addAction("模态对话框"); connect(p1,&QAction::triggered, [=]() { QDialog dlg; dlg.exec(); qDebug() << "模态对话框打开时,无法操作其他"; } ); //非模态对话框 pFile->addSeparator(); //添加分割线 QAction *p2 = pFile->addAction("非模态对话框"); connect(p2,&QAction::triggered, [=]() { QDialog *dlg = new QDialog(this); dlg->setAttribute(Qt::WA_DeleteOnClose); //防止内存泄漏,此函数的作用为关闭对话框时自动释放 dlg->show(); qDebug() << "非模态对话框打开时,可以操作其他"; } ); //关于对话框 pFile->addSeparator(); //添加分割线 QAction *p3 = pFile->addAction("关于对话框"); connect(p3,&QAction::triggered, [=]() { QMessageBox::about(this,"about","充值成功"); //about(父类,标题名,对话框内容); } ); //问题对话框 pFile->addSeparator(); //添加分割线 QAction *p4 = pFile->addAction("问题对话框"); connect(p4,&QAction::triggered, [=]() { QMessageBox::question(this,"question","是否充值",QMessageBox::Ok,QMessageBox::Cancel); //question(父类,标题名,对话框内容); } ); //文件对话框 pFile->addSeparator(); //添加分割线 QAction *p5 = pFile->addAction("文件对话框"); connect(p5,&QAction::triggered, [=]() { QString path = QFileDialog::getOpenFileName( this, "open", "../", "souce(*.cpp *.h);;" "Text(*.txt);;" "all(*.*)" ); qDebug() << path; } ); //工具栏 菜单项的快捷方式 QToolBar *toolBar = addToolBar("toolBar"); //工具栏添加快捷键 toolBar->addAction(p1); //添加小控件 QPushButton *b = new QPushButton(this); b->setText("新建"); toolBar->addWidget(b); connect(b,&QPushButton::clicked,this,&MainWindow::MySlot); //状态栏 QStatusBar *sBar = statusBar(); QLabel *MyLabel = new QLabel(this); MyLabel->setText("第一种添加方式 "); sBar->addWidget(MyLabel); // addwidget从左往右添加 sBar->addWidget(new QLabel("addwidget从左往右添加",this)); sBar->addPermanentWidget(new QLabel("addPermanentWidget从右往左添加",this)); //文本编辑区 QTextEdit *MyQTE = new QTextEdit(this); setCentralWidget(MyQTE); //浮动窗口 QDockWidget *dock = new QDockWidget(this); addDockWidget(Qt::RightDockWidgetArea,dock); //给浮动窗口添加文本编辑区 QTextEdit *MyDockQTE = new QTextEdit(this); dock->setWidget(MyDockQTE); } void MainWindow::MySlot(){ qDebug() << "新建成功"; } MainWindow::~MainWindow() { }
-
用HTML ul、li标签创建横向导航菜单
2020-05-29 15:38:30用CSS样式对ul、li标签进行控制,实现横向导航菜单栏。 HTML代码: <div class="menu"> <ul> <li><a href="javascript:void(0);">菜单样式</a></li> <li><a ... -
导航标签
2021-06-13 09:06:02导航标签用于生成前台导航,相关的有三个标签navigation,navigationMenu,navigationFolder,三个必须联合使用navigation标签标签名作用包含属性navigation导航标签nav-id,root,id,class标签属性:| 标签属性名 | 含义 |... -
dreamweaver cs6中网页制作一个带有列表下拉菜单的详细操作方法
2021-01-17 18:31:59原创dreamweaver cs6中网页制作一个带有列表下拉菜单的详细操作方法编辑:小禾 来源:PC下载网时间:2019-07-08 14:01:41很多的程序员们都在使用dreamweaver cs6软件,不过你们晓得dreamweaver cs6中网页怎么制作一个带... -
html中表单的标签是什么
2021-06-14 08:26:05form标签用于为用户输入创建HTML表单,包含input、label、select等其他元素。本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电脑。标签定义及用法在html中,标签是使用来创建供用户输入的html表单,... -
【列表标签】
2019-05-28 10:44:42列表标签列表标签 标签ul标签的 可选的属性 标签的 compact 属性 标签的 type 属性ul标签 的type属性 的属性值 标签ol标签 的属性 reversed 属性 标签的 start 属性 标签的 type 属性ol标签 type属性 的属性值 标签 ... -
微信服务号开发----创建个性化菜单
2017-01-09 21:03:521、目的:让公众号的不同用户群体看到不一样的自定义菜单。 2、权限:已认证订阅号和已认证服务号。 3、分组 1、用户分组(开发者的业务需求可以借助用户分组来完成) 2、性别 3、手机操作系统 4、地区(用户在... -
【微信小程序】之如何创建底部菜单?tabBar、mp-tabbar
2021-10-19 08:40:52方法一:通过app.json配置底部菜单(常用) 小程序根目录下的app.json文件用来对微信小程序进行全局配置。文件内容为一个 JSON 对象,全局配置 | 微信开放文档微信开发者平台文档... -
使用视图组件为ASP.NET Core创建侧面菜单
2018-12-15 12:02:10本文是关于为ASP.NET Core创建动态菜单系统。 在开发新的Web应用程序时,我们想要添加一个基于当前路由和参数动态生成的菜单组件。 我最初研究了ASP.NET Core中partials的概念,虽然这些对于重用静态标记非常有用... -
web前端开发与应用——创建下拉列表
2021-12-01 22:31:27select控件 select控件可以创建选择框。...标签用来创建下拉列表,<option>标签定义了列表中的可用选项。基本结构如下: <select name=""> <option value=" ">选项1</option> -
tp5自定义模板标签--无限极分类菜单(1)
2018-08-03 11:10:36思路(这个属于伪模板标签,将就着用吧): 1.自己先创建一个模板库 <?php namespace app\common; use think\template\TagLib; use think\Db;... // 标签定义: attr 属性列表 close 是否... -
用HTML中的列表标签做一个导航栏吧
2016-12-11 21:40:18首先要知道的:HTML中的列表标签都有那些呢? ul-li无序列表 ( 网页中显示的默认样式一般为:每项 li 前都自带一个圆点 ) 语法: 文本 文本 </ul>2.ol-li有序列表(在网页中显示的默认样式一般为:每项 li 前都自带... -
前端基础—— 表单标签(表单域,input的type属性和其他属性,label标签,文本域标签,下拉菜单,默认值)
2022-03-20 16:31:49前端基础—— 表单标签(表单域,input的type属性和其他属性,label标签,文本域标签,下拉菜单,默认值) -
微信程序开发系列教程(四)使用微信API创建公众号自定义菜单
2018-08-12 20:11:31大家可能经常看到一些微信公众号具有功能强大的自定义菜单,点击之后可以访问很多有用的功能。 这篇教程就教大家如何动手做一做。 这个教程最后实现的效果是:创建一个...文档里给了创建自定义菜单需要维护参数的H... -
Bootstrap学习笔记--下拉菜单,折叠,菜单,标签,Pills
2018-05-26 08:33:21下拉菜单: 下拉菜单是比较常见的 直接看源码: .dropdown表示下拉框 按钮和下拉框都要放在dropdown类的div下 ...span+.caret类可以创建一个插入箭头图标 .dropdown-menu类添加到&amp;amp;amp;amp;lt;u -
编写一个 JFrame 窗口,窗口包含一个菜单栏和一个 JLabel 标签。 菜单栏中有两个菜单,第一个菜单有两个...
2019-01-28 11:56:50编写一个 JFrame 窗口,要求如下: 1.窗口包含一个菜单栏和一个 JLabel... 3.JLabel 标签放置在窗口的中间(即 BorderLayout.CENTER),当点击菜单项的时候,菜单项中的文本显示的 JLabel 标签中。 import ja... -
HTML5列表标签
2018-03-04 01:07:17列表标签原创 2014年07月03日 20:16:37标签:HTML1104 列表(List),就是在网页中将相关资料以条目的形式有序...另外,还有不太常用的目录列表和菜单列表。 列表类型与标记符号列表类型标记符号列表类型标记符号... -
Tkinter-创建窗口实例
2019-05-31 23:07:35# 创建Label标签,第一个参数意思是,将label标签对象加入主窗口mw中 w = Label ( mw , text = "Hello World!Hello Tkinter!" ) # 布局设置 w . pack ( ) # 启动主窗口循环 mw . mainloop ( ) ... -
【通俗易懂】vue实现tagsview标签导航栏切换菜单功能【详细注释,都能看的懂】
2021-07-13 10:27:26最近遇到后台管理系统要写一个tagsview形式的标签导航栏。然后我新手不了解怎么做的,就去百度搜了一下,看到的都是一大段代码,复制也不生效,也没有介绍说怎么用,也不说思路,完全看不懂,后来自己研究慢慢试错,... -
微信扫码关注——个性化菜单,用户标签
2016-09-01 15:30:36扫码关注的技术步骤这里就不再一一...微信公众号进行开发时开启服务器配置,配置中填写了一个入口url,在这之前把自定义菜单的生成放在了这个入口url,以为每次进入公众号首页,都会重新生成一次自定义菜单,然后显示出 -
Cocos2d-JS中标签和菜单
2016-04-12 14:20:44一、标签 Cocos2d-JS中标签类重要有三种,cc.LabelTTF、cc.LabelAtlas和cc.LabelBMFont 1.cc.LabelTTF cc.LabelTTF是使用系统中的字体,它是最简单的标签类。cc.LabelTTF继承了cc.Node类,具有cc.Node的基本特性... -
springboot框架开发微信公众号(四)之自定义菜单的使用
2018-10-16 09:00:47我们平时使用最多的就是创建菜单了,往往我们执行了创建菜单的代码后,菜单并不会当即在我们关注过的公众号上显示出来,我们可以通过重新关注的方法,来查看我们创建或更改后的菜单。下面就来跟笔者来学一学这些接口... -
Semantic UI 之 下拉菜单 dropdown
2020-08-10 14:41:29第一步:创建项目 添加JQuery和Semantic UI包、创建dropdown.html页面: 第二步:dropdown.html页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>... -
python的tkinter模块创建菜单需要先实例化菜单
2018-03-08 10:27:30今日再看21天学通python这本书,在做第二十章的例子的时候,发现没有出现菜单栏。本来的源代码如下:#coding:utf-8#file:findfat1.pyimport tkinterimport tkinter.messageboxclass Windows: def __init__(self): ...