用Qt创建一个简单的菜单
本文将给你详细,讲述菜单的创建过程,包括QAction的创建和链接,QMenu的创建和链接QAction。
一、Window
在将这些之前,我们还是要知道QMainWindow的窗体,是怎么样的!
我们可以看到,MenuBar,在最上面的位置,我们添加的菜单就在窗体的那个位置。
二、创建过程(编写代码)
1、创建一个工程,添加一个类,MyWindow,添加一个源文件main.cpp。
添加头文件:
#include &QMenu&
#include &QMenuBar&
添加两个QAction:
QAction *addAct;
QAction *exitAct;
添加一个公共函数:
void createActions();
在mywindow.cpp构造函数里添加:
createActions();
在相应的函数创建QAction:
addAct = new QAction(tr("Add"),this);
exitAct = new QAction(tr("Exit"),this);
以上,我们实现了QAction的创建工作。
接着我们实现QAction的链接工作:
在mywindow.***件中,添加两个共有槽函数:
public slots:
void slotAdd();
void slotExit();
在mywindow.cpp文件函数中,定义这两个函数,这里我们把它们都设置为空,因为我们不用实现什么功能。
void MyWindow::slotAdd()
void MyWindow::slotExit()
在creatActions()函数中,添加两行代码,实现QAction的链接:
connect( addAct ,SIGNAL(triggered()), this ,SLOT(slotAdd()));
connect(exitAct,SIGNAL(triggered()),this,SLOT(slotExit()));
最后我们实现菜单的创建和与QAction 的链接。
在mywindow.***件中,我们添加共有函数:
void createMenus();
在mywindow.cpp文件中,我们定义这个函数:
void MyWindow::createMenus()
QMenu *fileMenu = menuBar()-&addMenu(tr("File"));
fileMenu-&addAction(addAct);
fileMenu-&addSeparator();
fileMenu-&addAction(addAct);
menuBar()-&addSeparator();
QMenu *exitMenu = menuBar()-&addMenu(tr("exit"));
exitMenu-&addAction(exitAct);
在构造函数里,添加一行代码:
createMenus();
这样,我们就完成了整个类的定义。
接着,我们在main函数里,添加代码如下:
#include &QApplication&
#include "mywindow.h"
int main(int argc,char * argv[])
QApplication app(argc,argv);
MyWindow w;
return app.exec();
以上,这个工程便,完成了。
综上所述,我们一般创建菜单的过程如下:
1、QAction的创建和链接
2、QMenu的创建,和与QAction的链接
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。 这几天看了网上一个视频。说是在网上可以给淘宝刷单做兼职,网上曝光的QT1220刷信誉平台怎么做?是真的吗?我也想做!
楼主发言:1次 发图:0张 | 更多
坦诚为你解答咱们这个帮淘 宝卖家刷 单子兼 职常见问题: 1、这样刷 单子需要用到我们自己的淘 宝账号,用到自己的实名认证的支付宝,会不会对我们自己有影响? 这 个首先从淘 宝的角度来说,淘 宝卖家会去查卖家的交易,我们对于淘 宝来说,是消费者,是客户,那么,你觉得淘 宝会觉得消费者在它那里消费了很多东西 是不正当的行为么?所以不用担心,淘.宝是不会自断财路的,而且我们确实是模拟的真实购买的环境,只不过我们在另外一个平台与淘.宝卖家达成共识,这个 淘.宝当然是不会知道的啦~ 其次,我们买家的旺旺号因交易次数也是有分别的,等级越高我们可以享受到淘.宝的很多优惠,我们在帮卖家刷 单的时候一次交易都会有一定的淘金币,这些对于我们自己购物的时候都是一些额外的福利。 2、这样给淘 宝卖家刷 单子是不是违 法的行为? 淘 宝刷 单也就是刷 信 誉, 现在可以肯定的告诉大家违 规不 违 法,这个总结一句是一个灰色产业链,虽然之前有阵子媒体有报道,但是并不是违 法的行为,大家可以放心。还有的人觉得这种 刷 信 誉的方式是欺骗消费者,这样的思想已经不够成熟了,用一个不恰当的比喻,就像痔疮一样,十人九痔,这个是淘.宝的潜规则,在开头我介绍y y平台成立的背 景的时候也有提到,一个新店如何快速提高知名度就必须做广告,身边有开淘.宝网店的朋友肯定有帮自己的朋友刷过,只不过之前都是小范围的,卖家身边的资源 有限,我们现在只不过是将这样的工作成规模了,组建了一个平台,可以说这样的平台 信 誉 以保证自己的竞争力。对于是不是欺骗消费者的行为,我想首先从简单的层面来说,这个给卖家做一个托,存在一种浅层面的欺骗行为,但是这个就像广告一样,都 有一定夸大的成分,可是每位真正开淘.宝店的人,他以这个为职业,并且他能够投入大量的时间和成本去经营自己的店铺,商品的质量肯定是要保障的,这样才是 一个良性循环,不然即使他投入了很多成本去刷 ,但是消费者购买伪劣商品以后给了差.评,他既不能更好的卖出商品,刷 信 誉所花费的成本也浪费了,我想没有这样傻的卖家愿意做这样吃力不讨好的事情吧,所以我认为对于该商品本身的质量问题卖家自己心里有数,我们没有必要太纠结,这不是一个道 德问题。 3、这么多的工作,对于一个没有怎么淘.宝购物的人来说好学习么? 有的人觉得这个给淘 宝刷 单的工作太繁琐,其实我只是介绍的比较详细,真正实施操作起来每个人各负其职,一单总共就10分钟就可以结束了这个工作就是积少成多的过程,需要大家有耐心,一定可以财源滚滚的。 有 的人觉得这样给淘 宝刷 单子的工作会很难,我们所有的工作只要你想学习,都是可以的,首先对于刷 单,每个人都会安排一个培训员,一直教到你会为止,有任何不懂的问题都可 以问的,如何申请淘 宝账号等等,其他的工作你可以向有经验的人学习,毕竟大家都是做刷 单兼 职的,只不过是时间加入的早晚问题,只要你 加入了y y公会做淘 宝刷 单兼 职我们就是一家人,都是朋友,只要你多问,你会很快熟悉我们的工作氛围的。 4、这个一个月能挣多少钱? 很 多人问过我这样一个问题,我回答起来是比较尴尬的,尴尬的原因是在因为兼 职时间是自由的,工资是按任务量结算的,完成一个任务即有2-20块钱的利润,所 以一般只要你认真做,平均一个小时10块钱的标准,多劳多得,这个只是一个很平均的范围,计算方法是不科学的。每个人的情况不同的。 平台为什么要交会费?我怎么知道你是不是骗.人的? 1.这个会费相当于是一个保障金,我们为了防止有些会员入会后捣乱,给你红包你买其他,比如刷完单子不给好评,投.诉**,或者申请退.款等,这些都会 直接影响到卖家店铺的安全,轻则宝贝被降权,严重的还会被封店铺。同时这个会费也是一个管理的费用,因为你入会所有接待你的人,培训你的人以及推荐你的 人,我们都需要给他们发放相应的报酬的。 2.我们这个平台拍的都是实物单,也就是衣服,裤子,日用品之类的,而且不是给你链接,是你自己去淘 宝网搜索,记住,这是都是用我们主持给你的红包付.款 或者是他人代付的,根本不需要你自己垫付一分钱,是可以退.款的,如果没有这个99块的费用,你申请退.款怎么办,现在差.评师多的是给差.评捣乱怎么办,卖家一点安全保障都没有,虽然99 解决不了什么问题,但是可以大幅度的减少哪些骗.子捣乱,希望你可以理解。 3. 加入公会是要交入 会 费的,一次交费,终生会员。无论哪家正规兼 职平台,都是要交的,只不过有交的多的有交的少的,交的少的都是新公会,任务少,没得做。会费主要用于接待讲解、培训新人,推广新人、管理员的工资等,剩余部分作为基金,赔偿商家损失,读到这里,你会问,怎么还赔偿商家损失?我来告诉你,淘.宝 有好评师,也有差.评师比如,如果有会员给商家恶意差.评,商家轻则降权,重则封店,是不是工会要赔偿人家?再者,会员交了会费,就不敢在工会给商家恶意差 评,如果他给商家差.评,他会被工会踢出去,那他就没得做了,他再要加入别的工会,还得交入 会 费,所以入 会 费也起到保证金的作用 要成工会的正式会员需要缴纳99元入 会 费的。会费是用来支付频道里的管理、接待、培训、主持的工资,还包括推荐人的佣金。 工会郑重承诺:一次交费,终身免费。 ------------------------------------------------------------------------------------ 有疑问或是不明白的加QQ详细了解 ------------------------------------------------------------------------------------ 我可以先试着做一下然后再交会费吗? 这 个请求听上去是很合理的,因为毕竟是网络兼 职,可信度是有待考验的,99块钱虽然不算多,但是如果是被骗.子骗了大家的心里肯定不爽的,我想既然你是诚心来 找兼 职的,我们都很能理解双方的处境,在我们入会以后,是需要有一个系统的培训的,包括个人身份资料的填写,还有花费一个小时的时间去培训,培训人员的工 资费用,还有接待人员,推荐人的推荐费都是从您交纳的99元中的会费提取的,你想一个培训人员培训了半天,没有任何的回报,谁也不想做这么傻的事情,对 吧。所以既然决定踏踏实实做兼 职的话,希望我们双方都有个诚心诚意的态度,你可以多多考察我们工会的真实性,但是我们没有尝试做一下这个说法的。我们既然 承担了这份工作,很多细节问题就必须要注意到,就要能准确无误的完成卖家的要求,我们不想这样一个平台被淘.宝卖家的竞争对手轻易摧毁或者是骗.子捣乱。 说 了这么多,如果大家对我们的兼 职感兴趣,有意向加入的话就按照要求进我们的y y频道,我们会有接待员(说不定将来你也是一名接待员哦)专门接待你一下,大 致跟你再介绍一下这些工作的。希望大家能够早日找到适合自己的一份兼 职,挣一份不错的外快~ Q问兼!职做什么的? 淘 宝刷 单兼 职就是给淘 宝卖家通过刷 单子提高信誉的,我个人觉得只是一种促销方式,毕竟网络的东西看不到摸不着的,只能看信~~~誉和销量 Q问要流动资金吗? 不要你的流动资金,用先给你的红包付.款或者是他人代付 Q问什么是红包 A:红包就是我们发给你用来购买商品的,即我们给你钱,你用我们给的钱付.款!加入公会后,培训会教你如何领取红包。红包就是商家用自己的钱做成红包,有个卡号和验证码(支.付宝点开,点账号管理点红包领取红包之后用红包付.款) Q:流程是怎样的。怎么拍单?流程是怎样的? A: 真实网购流程,就是你平常在淘.宝怎么买东西就怎么做,其中在你做任务时会有主持提醒该怎么做,你按照他说的一步步来。整个流程大概如下:接下任务→找到 店铺,浏览商品等→拍下宝贝→领取红包后付.款→领取佣金。加入后会给你培训,具体细节自会了解!我们不会给你个链接让你去拍的(骗.子才这样)!我们都是提 供店铺和宝贝信息让你去淘 宝官方网址拍!所以不用担心钓鱼网站的问题!具体的你做的时候还有培训部的培训你 ------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------ 有疑问或是不明白的加QQ详细了解
注意图片路径怎么表示,我的图片放在该工程下的images文件夹中。存在问题:图片可以显示出来,但是图片大小不能和frame大小一致,显示效果不好,具体怎样调整大小,以后再补充,效果如下(设置了透明的,好像很漂亮~透明部分将我的桌面显示出来了~_~):2.setStyleSheet方法(非常好用的方法)
#include&&QApplicationinclude&&QtGui&int&main(int&argc,&char&*argv[]){&&&&QApplication&app(argc,argv);&&&&QFrame&*frame&=&new&QF&&&&frame-&setObjectName("myframe");&&&&frame-&resize(400,700);&&& frame-&setStyleSheet("QFrame#myframe{border-image:url(images/frame.png)}"&);&&& frame-&show();&&&&return&app.exec();}
效果如下:注意:很漂亮的效果吧~~注意代码中红线的部分噢,设置ObjectName后,才能保证setStyleSheet只作用在我们的frame上,不影响其子控件的背景设置。之所以用border-image而不用background-image,还是上面的问题,用background-image不能保证图片大小和控件大小一致,图片不能完全显示,这个以后再补充了,现在还没有找到方法。3.paintEvent事件方法
//myframe.***件#ifndef&MYFRAME_H#define&MYFRAME_H#include&&QWidgetinclude&&QtGui&class&MyFrame&:&public&QWidget{public:&&&&MyFrame();&&&&void&paintEvent(QPaintEvent&*event);};#endif&//&MYFRAME_H//myframe.cpp文件#include&"myframe.h"MyFrame::MyFrame(){}void&MyFrame::paintEvent(QPaintEvent&*event){&&&&QPainter&painter(this);&&&&painter.drawPixmap(0,0,400,700,QPixmap("images/frame.png"));}//main.cpp文件#include&&QApplicationinclude&&QtGuiinclude&"myframe.h"int&main(int&argc,&char&*argv[]){&&&&QApplication&app(argc,argv);&&&&&&&&MyFrame&*frame&=&new&MyF&&&&frame-&resize(400,700);&&&&frame-&show();&&&&return&app.exec();}
效果如下:注:跟前面一样的效果吧,与前面的差别就是这个背景图片不随着窗口的大小而变化,因为它的固定大小被设置成(400,700)了。重写QWidget的paintEvent事件,当控件发生重绘事件,比如show()时,系统就会自动调用paintEvent函数。好了,上面是三种设置背景图片的方法,下面我要说一个设置QPushButton的背景图片的方法,用的是setIcon方法(其实QPushButton设置背景图片也可以用前面三种方法的,不过现在这种Icon方法的看起来也不错)
#include&&QApplicationinclude&&QtGui&int&main(int&argc,&char&*argv[]){&&&&QApplication&app(argc,argv);&&&&QFrame&*frame&=&new&QF&&&&QPushButton&*&button0&=&new&QPushButton(frame);&&&&QPushButton&*&button1&=&new&QPushButton(frame);&&&&QPushButton&*&button2&=&new&QPushButton(frame);&&&&QPushButton&*&button3&=&new&QPushButton(frame);&&&&QPushButton&*&button4&=&new&QPushButton(frame);&&&&QPushButton&*&button5&=&new&QPushButton(frame);&&&&frame-&setObjectName("myframe");&&&&frame-&resize(400,700);&&&&frame-&setStyleSheet("QFrame#myframe{border-image:url(images/frame.png)}"&);&&&&button0-&setGeometry(60,150,68,68);&&&&button1-&setGeometry(160,150,68,68);&&&&button2-&setGeometry(260,150,68,68);&&&&button3-&setGeometry(60,280,68,68);&&&&button4-&setGeometry(160,280,68,68);&&&&button5-&setGeometry(260,280,68,68);&&&&QIcon&&&&&QPixmap&pixmap0("images/SMS.png");&&&&icon.addPixmap(pixmap0);&&&&button0-&setIcon(icon);&&&&button0-&setIconSize(QSize(68,68));&&&&button0-&setFixedSize(pixmap0.size());&&&&button0-&setMask(pixmap0.mask());&&&&QPixmap&pixmap1("images/EMail.png");&&&&icon.addPixmap(pixmap1);&&&&button1-&setIcon(icon);&&&&button1-&setIconSize(QSize(68,68));&&&&button1-&setFixedSize(pixmap1.size());&&&&button1-&setMask(pixmap1.mask());&&&&QPixmap&pixmap2("images/Contacts.png");&&&&icon.addPixmap(pixmap2);&&&&button2-&setIcon(icon);&&&&button2-&setIconSize(QSize(68,68));&&&&button2-&setFixedSize(pixmap2.size());&&&&button2-&setMask(pixmap2.mask());&&&&QPixmap&pixmap3("images/Calendar.png");&&&&icon.addPixmap(pixmap3);&&&&button3-&setIcon(icon);&&&&button3-&setIconSize(QSize(68,68));&&&&button3-&setFixedSize(pixmap3.size());&&&&button3-&setMask(pixmap3.mask());&&&&QPixmap&pixmap4("images/GoogleVoice.png");&&&&icon.addPixmap(pixmap4);&&&&button4-&setIcon(icon);&&&&button4-&setIconSize(QSize(68,68));&&&&button4-&setFixedSize(pixmap4.size());&&&&button4-&setMask(pixmap4.mask());&&&&QPixmap&pixmap5("images/AndroidMarket.png");&&&&icon.addPixmap(pixmap5);&&&&button5-&setIcon(icon);&&&&button5-&setIconSize(QSize(68,68));&&&&button5-&setFixedSize(pixmap5.size());&&&&button5-&setMask(pixmap5.mask());&&&&frame-&show();&&&&return&app.exec();}
效果如下:注:图标效果不错吧~_~好了,今天就写到这里,以后有新的内容再补充。补充,这样就可以让图片跟窗口一样大小了。
int&main(int&argc,&char&*argv[]){&&&&QApplication&app(argc,argv);&&&&&&&&QFrame&*frame&=&new&QF&&&&frame-&resize(400,700);&&&&QImage&image1;&&&&image1.load("images/frame1.jpg");&&&&QImage&image2&=&image1.scaled(400,700);&&&&QPalette&&&&&&&palette.setBrush(frame-&backgroundRole(),QBrush(image2));&&&&frame-&setPalette(palette);&&&&frame-&setMask(pixmap.mask());&&//可以将图片中透明部分显示为透明的&&&&frame-&setAutoFillBackground(true);&&&&frame-&show();&&&&return&app.exec();}
哥们你这个模拟器是symbian的还是android的?看到你的贴图我都困惑了
@孔雀I am a girl.No symbian or android.Just Linux and QT(Qt creator).The phone frame is just a picture, not a simulator.
@qianqian
very good !! I like it!
可以留个 QQ一起交流吗?我q的是 。
4、设置字体大小、粗体、斜体、颜色、背景的时候要注意:setFont可以设置,但是前提是没有用setStyleSheet函数 否则 setFont不起作用,同时还可以用html脚步&font&&/font&这样设置。 StyleSheet方法:textEdit-&setStyleSheet(&font-size:18&&background-color:& &border-style:&&font-style:&&font-weight:&&color:white&); setFont方法: QF font.setFamily(&Bitstream Charter&); font.setPixelSize(16); font.setBold(true); font.setItalic(true); textEdit-&setFont(font); html方法:textEdit-&setText(&&font color=red&abc&/font&&)
果断被忽悠了,竟然是个图,不是个模拟器?
@pacco
请你看清楚行么,我从来没说这是模拟器,我说了是qt添加背景图片的代码,而且我代码都贴出来了,你看得懂就该知道是怎么回事,看不懂不要在这乱说我忽悠谁,大哥,拜托你看清楚了再说话,我学习记笔记不算忽悠谁吧。
很喜欢你的博客,简明得体,美观大方。以后小弟会多多参阅学习的。
是在QVFB下还是直接环境下
我换了张图片试了一下程序,出现了QFrame和frame没有声明的问题,不知道怎么回事呢
QPushButton 这里为什么不用layout呢?
QPushButton为什么不用layout呢?
QFrame是不是也可以用layout呢?没试过,有空在琢磨琢磨。。
你好,我用3个button添加背景图,然而第三个button的图标老是显示不对,是第二个的图标,请问怎么改呀?
随笔分类(28)
随笔档案(28)
图形学网站
阅读排行榜
评论排行榜