ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:1.28MB ,
资源ID:17343209      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17343209.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实训四文档格式.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实训四文档格式.docx

1、 curImage.setAlphaBuffer(true); resizeContents(); /此函数用于管理初始窗口部件获取自己的大小void ImageEditor:resizeContents() QSize size = zoom*curImage.size(); if(zoom = 3) size += QSize(1,1); /若zoom大于等于3,size则放大一格 QScrollView:resizeContents(size.width(), size.height();/QScrollView是否显示滚动条由窗口的大小决定setImage(const QImage &

2、newImage) /获取所要显示的图片 if(newImage != curImage) curImage = newImage.convertDepth(32); curImage.detach(); /重新获得大小 updateContents();/重新绘制图片 contentsMousePressEvent(QMouseEvent *event) /鼠标点击事件 if(event-button() = LeftButton) /左击事件 setImagePixel(event-pos(), true); elsebutton() = RightButton) /右击事件pos(),

3、false);cotentMouseMoveEvent(QMouseEvent *event) /鼠标按住拖动事件state() & LeftButton) /左击事件 RightButton) /右击事件int main(int argc, char *argv) QApplication app(argc, argv); ImageEditor *imageEditor = new ImageEditor; imageEditor-setImage(QImage:QImage(mouse.png,0); /加载资源图片mouse.png app.setMainWidget(imageEdi

4、tor);show(); /显示窗口 return app.exec();多文档界面的Editor运行结果:MainWindow:MainWindow(QWidget *parent, const char *name) QMainWindow(parent, name) workspace = new QWorkspace(this); /创建一个窗口部件 setCentralWidget(workspace); /使其成为中央窗口部件 connect(workspace, SIGNAL(windowActivated(QWidget *), this, SLOT(updateMenus()

5、; connect(workspace, SIGNAL(windowActivated(QWidget *), /槽用于保持菜单栏和状态栏总是用于反应,当前激活子菜单的窗口状态。 this, SLOT(updateModIndicator(); createActions(); createMenus(); createToolBars(); createStatusBar(); setCaption(tr(Editor); setIcon(QPixmap:fromMimeSource(icon.pngvoid MainWindow:updateMenus() /只要一个窗口被激活或最后一个被

6、关闭,updatemenu就会被调用 bool hasEditor = (activeEditor() != 0); saveAct-setEnabled(hasEditor); saveAsAct- pasteAct- deleteAct- copyAvailable(activeEditor() & activeEditor()-hasSelectedText(); closeAct- closeAllAct- tileAct- cascadeAct- nextAct- previousAct- windowsMenu-clear(); /若不存在激活的窗口,清空windows菜单 cre

7、ateWindowsMenu();2. 编写程序ch_501,实现程序界面如下:下方文本框可以输入内容(保存类型为All Files(*.*),所有菜单及工具按钮均可实现功能。File菜单如下:Help菜单如下:About菜单为:About Qt菜单为实验过程:1. 运行结果:2、 完成书本第七部分“事件处理”中的例题Ticker;#include #include ticker.hTicker:Ticker(QWidget *parent, const char *name) QWidget(parent, name) offset = 0; /设置被绘制文本X坐标 myTimerId =

8、0; /定时器标示器void Ticker:setText(const QString &newText) myText = newText; update(); /强制重新绘制 updateGeometry(); /提示ticker窗口布局的变化QSize Ticker:sizeHint() const return fontMetrics().size(0, text();paintEvent(QPaintEvent *) QPainter painter(this); int textWidth = fontMetrics().width(text(); /确定文版需要多少水平空间 if

9、 (textWidth 1) return; int x = -offset; while (x timerId() = myTimerId) +offset; if (offset = fontMetrics().width(text() scroll(-1, 0); /左移一个像素 else QWidget:timerEvent(event);hideEvent(QHideEvent *) killTimer(myTimerId); /当文本消失时,释放对应的定时器3、 请按下列程序源代码,编写ch_601,并在程序后进行注释:ch_601.cpp的源程序为:qtimer.hqapplic

10、ation.hqtextcodec.hstdlib.hch_601.hch_601:ch_601(QWidget *parent, const char *name):QWidget(parent,name) for(int a=0 ; a start(1000);void ch_601:updateCaption() QString s; s.sprintf(QObject:tr(QTimer实例),rectangles); /设置caption为“QTimer实例”和举行数 setCaption(s); QPainter paint(this); int w = width(); /宽w

11、int h = height(); /高h if(w = 0 | h = 0) /若w=0或h=0 return ; /返回 paint.setPen(NoPen); /若没有画笔则设置画笔 paint.setBrush(colorsrand() % numColors); /画刷颜色随机 QPoint p1(rand()%w,rand()%h); /设置矩形的位置 QPoint p2(rand()%w,rand()%h); QRect r(p1,p2); paint.drawRect(r); /画矩形timerEvent(QTimerEvent *) for(int i =0 ; i con

12、st int numColors = 120;class Ch_601 : public QWidget Q_OBJECTpublic: Ch_601( QWidget *parent=0, const char *name=0 );protected: void paintEvent( QPaintEvent * ); void timerEvent( QTimerEvent * );private slots: void updateCaption();private: int rectangles; QColor colorsnumColors;#endifCh_601运行结果:4、 请

13、按下列程序源代码(其中主程序自编),编写ch_602,并在程序后进行注释:progressbar.hqradiobutton.hqpushbutton.hqprogressbar.hqlayout.hqmotifstyle.hProgressBar:ProgressBar(QWidget *parent , const char *name )QButtonGroup(0, Horizontal, QObject:进度条测试), parent, name), timer() setMargin(10); /设置边距 QGridLayout* toplayout = new QGridLayou

14、t(layout(), 2,2, 5); / 设置空间组 setRadioButtonExclusive(TRUE); /按键单一选择 slow = new QRadioButton(QObject:低速),this); /设置低速,中速,高速三个选项 normal = new QRadioButton(QObject:中速), this); fast = new QRadioButton(QObject:高速 QVBoxLayout* vb1 = new QVBoxLayout; /新建一个box toplayout-addLayout(vb1, 0, 0); /嵌套布局 vb1-addWi

15、dget(slow); /添加slow,normal,fast到布局addWidget(normal);addWidget(fast); start = new QPushButton(QObject:开始 /新建开始按钮 reset = new QPushButton(QObject:重启 /新建重启按钮 QVBoxLayout* vb2 = new QVBoxLayout;addLayout(vb2, 0, 1); vb2-addWidget(start);addWidget(reset); progress = new QProgressBar(100, this); /添加进度条add

16、MultiCellWidget(progress, 1, 1, 0, 1); /1列插入progressbar占2行2列 connect(start, SIGNAL(clicked(), this, SLOT(slotStart(); / 点击开始触发开始槽 connect(reset, SIGNAL(timeout(), this, SLOT(slotTimeout(); /点击重置触发timeout槽 normal-setChecked(TRUE); /默认选中设置为中速 start-setFixedWidth(80); /设置最大最小宽度为80 setMinimumWidth(300);

17、 /设置最小宽度300 void ProgressBar:slotStart() if(progress-progress() = -1) if(slow-isChecked() progress-setTotalSteps(10000); /slow进度条满需10000小时 else if(normal-setTotalSteps(1000); /normal进度条满需1000小时setTotalSteps(50); /fast进度条满需50小时 slow-setEnabled(FALSE); /slow不能选中 /normal不能选中 fast- /fast不能选中 if(!timer.i

18、sActive() /若时钟未被激活 timer.start(1); /时钟设置为1setText(QObject:暂停 timer.stop(); /时间停止继续slotReset() /进度条重置setEnabled(TRUE); /start可以被选择 /slow可以被选择 /normal可以被选择 /fast可以被选择 reset(); /进度条重置slotTimeout() int p = progress-progress(); /声明p,用于保存进度条 #if 1 if(p = progress-totalSteps() /若进度条满 #endifsetProgress(+p);

19、processbar.h的源程序为:#ifndef PROGRESSBAR_H#define PROGRESSBAR_Hqbuttongroup.hclass QRadioButton;class QPushButton;class QProgressBar;class ProgressBar : public QButtonGroup ProgressBar( QWidget *parent = 0, const char *name = 0 ); QRadioButton *slow, *normal, *fast; QPushButton *start, *pause, *reset; QProgressBar *progress; QTimer timer;protected slots: void slotStart(); void slotReset(); void slotTimeout();Main.cpp源程序为: ProgressBa

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1