360主菜单界面

#!/usr/bin/python  
#-*-coding:utf-8-*-


from title_widget import *
from content_widget import *
from system_tray import *
from about_us import *
from main_menu import *
from character_widget import *
from setting_dialog import *
from  skin_widget import *
#import util


from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.Qt import *


class MainWidget(QWidget):
	closeWidget = pyqtSignal()
	
	def __init__(self,parent = None):
		super(MainWidget,self).__init__()
		self.location = QRect()
		self.title_widget= TitleWidget(self) #
		self.content_widget = ContentWidget(self) #
		self.system_tray = SystemTray(self) #
		self.setting_dialog = SettingDialog(self) #
		self.character_widget = CharacterWidget(self) #
		self.about_us_dialog = AboutUsDialog(self) #
		self.skin_name = QString("./img/skin/17_big.jpg") #
		self.main_menu = MainMenu() #
		self.skin_widget = SkinWidget() #
		self.setMinimumSize(900, 600) #
		self.setWindowIcon(QIcon("./img/safe.ico"))#
		self.setWindowFlags(Qt.FramelessWindowHint)#
		self.location = self.geometry() #
		self.closeWidget.connect(self.close)
		#self.is_read = Util.readInit(QString("./user.ini"), QString("skin"), skin_name)


		#if(self.is_read):
		#if(skin_name.isEmpty()):
		#skin_name = QString(":/skin/17_big")
		#else:
		#skin_name = QString(":/skin/17_big")


		self.center_layout =  QVBoxLayout()
		self.center_layout.addWidget(self.content_widget)
		self.center_layout.setSpacing(0)
		self.center_layout.setContentsMargins(1, 0, 1, 1)


		main_layout =  QVBoxLayout()
		main_layout.addWidget(self.title_widget)
		main_layout.addLayout(self.center_layout)
		main_layout.setSpacing(0)
		main_layout.setContentsMargins(0, 0, 0, 0)


		self.setLayout(main_layout)


		self.connect(self.title_widget, SIGNAL("showSkin()"),self, SLOT("showSkinWidget()"))
		self.connect(self.title_widget, SIGNAL("showMainMenu()"),self,  SLOT("showMainMenu()"))
		self.connect(self.title_widget, SIGNAL("showMax()"),self,  SLOT("showMax()"))
		self.connect(self.title_widget, SIGNAL("showMin()"),self,  SLOT("showMinimized()"))
		self.connect(self.title_widget, SIGNAL("closeWidget()"),self,  SLOT("close()")) #hide()


		self.connect(self.main_menu, SIGNAL("showSettingDialog()"),self,  SLOT("showSettingDialog()"))
		self.connect(self.main_menu, SIGNAL("showCharacter()"),self,  SLOT("showCharacter()"))
		self.connect(self.main_menu, SIGNAL("showAboutUs()"),self,  SLOT("showAboutUs()"))


		self.connect(self.skin_widget, SIGNAL("changeSkin()"),self,  SLOT("changeSkin()"))
		self.connect(self.system_tray, SIGNAL("activated()"),self,  SLOT("iconIsActived()"))


		self.system_tray.show()




	def paintEvent(self,event):# QPaintEvent *
		painter = QPainter (self)
		pixmap = QPixmap() 
		pixmap.load(self.skin_name)
		painter.drawPixmap(self.rect(), pixmap)


		painter = QPainter (self)
		pixmap = QPixmap (self.size())
		pixmap.fill()
		painter.end()
		painter.begin(pixmap)
		brush = QBrush() 
		brush.setTextureImage(QImage(self.skin_name))
		painter.setBrush(brush)
		painter.setPen(Qt.gray)
		painter.drawRect(0, 0, self.width()-1, self.height()-1)
		painter.end()
		#painter.begin(self)
		painter.drawPixmap(self.rect(),pixmap)


		painter = QPainter (self)
		painter.drawPixmap(self.rect(), QPixmap(self.skin_name))


		painter2 = QPainter (self)
		painter2.setPen(Qt.gray)
		painter2.drawPolyline(QPointF(0, 100), QPointF(0, self.height()-1), QPointF(self.width()-1, self.height()-1), QPointF(self.width()-1, 100))
	
	@pyqtSlot()	
	def showMax(self):
		self.is_max=False
		if(self.is_max):
			self.setGeometry(location)
		else:
			self.location = self.geometry()
			self.setGeometry(QApplication.desktop().availableGeometry())
		self.is_max = ~is_max
	
	@pyqtSlot()	
	def showSkinWidget(self):
		self.skin_widget.show()
	
	@pyqtSlot()	
	def showMainMenu(self):
		p = self.rect().topRight() #QPoint
		p.setX(p.x() - 150)
		p.setY(p.y() + 22)
		self.main_menu.exec_(self.mapToGlobal(p))
	
	@pyqtSlot()	
	def iconIsActived(self,reason): #QSystemTrayIcon.ActivationReason 


		if reason == QSystemTrayIcon.Trigger:
			self.showWidget()
		elif reason == QSystemTrayIcon.DoubleClick:
			self.showWidget()
	
	@pyqtSlot()
	def showWidget(self):
		self.showNormal()
		self.raise_()
		self.activateWindow()
		self.title_widget.turnPage(0)
	
	@pyqtSlot()	
	def showAboutUs(self):
		self.about_us_dialog.exec_()
	
	@pyqtSlot()	
	def showCharacter(self):
		self.character_widget.show()
	
	@pyqtSlot()	
	def showSettingDialog(self):
		self.setting_dialog.exec_()
	
	@pyqtSlot()	
	def changeSkin(self,skin_name): #QString 
		#Util.writeInit(QString("./user.ini"), QString("skin"), skin_name)
		self.skin_name = skin_name
		self.update()




if __name__ == "__main__":


    import sys


    app = QApplication(sys.argv)
    #codec = QTextCodec.codecForName("System")
    #codec.setCodecForLocale(app)
    #codec.setCodecForTr(app)
    #codec.setCodecForCStrings(app)


    translator = QTranslator(app)
    translator.load(QString("qt_zh_CN.qm"))
    app.installTranslator(translator)


    translator_zh = QTranslator(app) 
    translator_zh.load(QString("360safe_zh.qm"))
    app.installTranslator(translator_zh)
    app.setFont(QFont("Arial",9))


    main_widget = MainWidget ()
    main_widget.showWidget()


    sys.exit(app.exec_())




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现360安全卫士界面源码的方法有很多种,下面我介绍一种常见的实现方式。 首先,我们需要使用Qt Creator创建一个新的Qt项目,设置好项目名称和路径。 接下来,在Qt Creator的界面中,打开"设计"模式,然后将界面设计出来。可以添加标题栏、菜单栏、工具栏、标签页、按钮等组件,来模拟360安全卫士的界面。可以设置组件的风格、大小、位置等属性,以达到所需的效果。 然后,在Qt Creator的源代码编辑器中,打开mainwindow.cpp文件,开始编写界面的源码。 首先,导入需要的Qt库: #include <QMainWindow> #include <QMenuBar> #include <QToolBar> #include <QLabel> #include <QPushButton> #include <QHBoxLayout> #include <QTabWidget> 然后,在MainWindow类的构造函数中,初始化界面的各个组件,设置它们的位置和大小,以及设置一些基本的属性。 例如,我们可以创建一个QMenuBar,并添加一些菜单项。可以创建一个QToolBar,并在其中添加一些按钮。可以创建一个QTabWidget,并在其中添加几个标签页。 最后,将各个组件添加到界面窗口上,并设置布局。可以使用QHBoxLayout或QVBoxLayout来布局窗口中的组件。可以使用addWidget()函数将组件添加到布局中,并使用setLayout()函数将布局设置为窗口的布局。 编写完源码后,编译并运行程序。就可以看到模拟360安全卫士界面的效果了。 当然,上述代码只是一个简单的示例,实际上要实现一个完整的360安全卫士界面还需要更多的代码和功能。 总结起来,实现360安全卫士界面源码的关键是通过Qt的图形化界面设计工具设计出界面,然后在源代码中进行组件的初始化、布局和添加操作。这样,就可以通过编译和运行来实现界面的效果了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值