[QT] 트레이아이콘(TrayIcon)사용하기
http://browniz1004.blog.me/220956638885
qt 트레이 showMinimized() tray -> 나의 검색어
[헤더파일]
QSystemTrayIcon *TrayIcon; //전역변수
QMenu *TrayIconMenu;
private slots:
void onSystemTryIconClicked(QSystemTrayIcon::ActivationReason); //트레이아이콘 클릭시 이벤트 설정
void on_actionExit_triggered(); //트레이아이콘 메뉴설정시 사용
private: //프로그램종료시, 프로그램 숨김시 이벤트설정
void closeEvent(QCloseEvent *event);
void hideEvent(QHideEvent *event);
[소스파일]
TrayIcon = new QSystemTrayIcon(this);
TrayIconMenu = new QMenu(this);
TrayIconMenu->addAction(ui.actionExit);
TrayIconMenu->addSeparator();
TrayIcon->setContextMenu(TrayIconMenu);
QIcon Icon(":/appMain/Resources/icon_menu_01.png"); //아이콘은 기존 리소스 경로로 지정
TrayIcon->setIcon(Icon);
TrayIcon->show();
TrayIcon->setToolTip(tr("DFC")); //트레이아이콘에 마우스 움직였을때 문구
TrayIcon->showMessage(tr("DFC"), tr("DFC."), QSystemTrayIcon::Information, 5000); //트레이아이콘 처음 적용시 설명
connect(TrayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(onSystemTryIconClicked(QSystemTrayIcon::ActivationReason)));
함수 선언부
void appMain::onSystemTryIconClicked(QSystemTrayIcon::ActivationReason reason)
{
switch (reason)
{
case QSystemTrayIcon::Trigger:
case QSystemTrayIcon::DoubleClick:
this->setWindowState(Qt::WindowActive);
this->show();
break;
}
}
void appMain::hideEvent(QHideEvent *event)
{
if (isMinimized())
{
this->hide();
}
QWidget::hideEvent(event);
}
void appMain::closeEvent(QCloseEvent *event)
{
if (TrayIcon->isVisible())
{
TrayIcon->hide();
}
}
void appMain::on_actionExit_triggered()
{
this->hide();
this->close();
}
zbxe 작업일지
2. /zbxe/widgets/login_info/skins/xe_official/login_form.html 수정
- 오픈아이디만 사용할 수 있도록 수정함.
3. 플래닝 페이지를 외부 페이지 생성 메뉴를 이용해 등록
4. /zbxe/widgets/login_info/skins/xe_official/login_info.html 수정
- 플래닝 페이지 링크 생성
5. create.php 생성
- 해당 플랜에 대한 폴더를 생성하는 page
6. create.php에 unlink 추가
- 해당 플랜 삭제시 이용 루틴(inst변수를 이용하여 식별)
7. syn_sch 파일 수정
- 인코딩 문제가 발생하여 넘겨주는 변수와 내부 sql을 수정(숫자로 전송)
zbxe 작업일지(2일차)
- 플래닝 페이지 용 레이아웃 등록
2. design.htm 생성 및 연결
- 변수를 재활용 할 수 없으므로, iframe형태로 home.php를 로딩함
3. insert.php 작성
- 커리어플랜(여러 인물 적용 가능) 및 기타 플랜 db삽입/삭제/열람 기능 연동
php XML파서
<xml.php>
$file = "cultlife.xml";
function trustedFile($file)
{
// only trust local files owned by ourselves
if (!eregi("^([a-z]+)://", $file) && fileowner($file) == getmyuid())
{
return true;
}
return false;
}
function startElement($parser, $name, $attribs)
{
print "<<font color=#0000cc>$name</font>";
if (sizeof($attribs)) {
/*while (list($k, $v) = each($attribs)) {
print "<font color=#009900>$k</font><font color=#990000>$v</font>";
} */
}
print ">";
}
function endElement($parser, $name)
{
print "</<font color=#0000cc>$name</font>><br>";
}
function characterData($parser, $data)
{
print "<b>$data</b>";
}
function PIHandler($parser, $target, $data)
{
switch (strtolower($target)) {
case "php":
global $parser_file;
// If the parsed document is "trusted", we say it is safe
// to execute PHP code inside it. If not, display the code
// instead.
if (trustedFile($parser_file[$parser])) {
eval($data);
} else {
printf("Untrusted PHP code: <i>%s</i>", htmlspecialchars
($data));
}
break;
}
}
function defaultHandler($parser, $data)
{
if (substr($data, 0, 1) == "&" && substr($data, -1, 1) == ";") {
printf('<font color="#aa00aa">%s</font>', htmlspecialchars
($data));
} else {
printf('<font size="-1">%s</font>', htmlspecialchars($data));
}
}
function externalEntityRefHandler($parser, $openEntityNames, $base,
$systemId,
$publicId)
{
if ($systemId) {
if (!list($parser, $fp) = new_xml_parser($systemId)) {
printf("Could not open entity %s at %sn", $openEntityNames,
$systemId);
return false;
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($parser, $data, feof($fp))) {
printf("XML error: %s at line %d while parsing entity %
sn",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser),
$openEntityNames);
xml_parser_free($parser);
return false;
}
}
xml_parser_free($parser);
return true;
}
return false;
}
function new_xml_parser($file) {
global $parser_file;
$xml_parser = xml_parser_create();
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 1);
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
xml_set_processing_instruction_handler($xml_parser, "PIHandler");
xml_set_default_handler($xml_parser, "defaultHandler");
xml_set_external_entity_ref_handler
($xml_parser, "externalEntityRefHandler");
if (!($fp = @fopen($file, "r"))) {
return false;
}
if (!is_array($parser_file)) {
settype($parser_file, "array");
}
$parser_file[$xml_parser] = $file;
return array($xml_parser, $fp);
}
if (!(list($xml_parser, $fp) = new_xml_parser($file))) {
die("could not open XML input");
}
print "<pre>";
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %dn",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
print "</pre>";
print "parse completen";
xml_parser_free($xml_parser);
<xmltest.xml>
<?xml version='1.0'?>
<!DOCTYPE chapter SYSTEM "/just/a/test.dtd" [
<!ENTITY plainEntity "FOO entity">
<!ENTITY systemEntity SYSTEM "xmltest2.xml">
]>
<chapter>
<TITLE>Title &plainEntity;</TITLE>
<para>
<informaltable>
<tgroup cols="3">
<tbody>
<row><entry>a1</entry><entry
morerows="1">b1</entry><entry>c1</entry></row>
<row><entry>a2</entry><entry>c2</entry></row>
<row><entry>a3</entry><entry>b3</entry><entry>c3</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
&systemEntity;
<sect1 id="about">
<title>About this Document</title>
<para>
<!-- this is a comment -->
<?php print 'Hi! This is PHP version '.phpversion(); ?>
</para>
</sect1>
</chapter>
<xmltest2.xml>
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY testEnt "test entity">
]>
<foo>
<element attrib="value"/>
&testEnt;
<?php print "This is some more PHP code being executed."; ?>
</foo>
창업일지 - 사업자등록 및 통신판매업신고
-> 장소 : 세무서
2. 통신판매업신고는 구청 지역경제과에서 하였으며, 여러가지 확인절차(세금 채납 등)을 거쳐 신청을 완료하였다. 사업자등록증과 신분증만 있으면 된다.
창업일지 - 통신판매업신고증 수령 및 부가통신사업신고
2. 부가통신사업신고는 정보통신부(www.mic.go.kr)에서 갖가지(?) Active-x 컨트롤러를 설치하면, 온라인으로 간단히 신청가능하고, 등기로 받아볼 수 있다. 1800원정도 나온다.(빠른 등기는 500~1000원 정도 추가 과금)
% 도메인 포워딩이 완료되었다. 페이지 작업을 해야하는데...
zbxe 작업일지(4일차)
- 외부경로(zbxe 밖에서 접근)
1-1. design.html 예외처리
- 로그인하지 않은 사용자의 호출
2. simple.php 예외처리
- 존재하지 않는 (srl값 호출)시
2-1. 기본 레이아웃(xe_official) 편집
- 커리어플랜의 보기/편집/삭제 모드로 3분류
zbxe 작업일지(5일차)
- urlencode()를 이용해 query를 넘겨 FEED ON FEEDS라이브러리 이용
- 도서 api 2차 키워드 지원
2. naver 상호검색 api 연동
- zbxe.php에 FEED ON FEEDS라이브러리 이용
3. write_form.php, simple.php 수정
- 작성자의 태그와 작성 대상 키워드 태그 적용(글쓰기 가능)
워크넷(한국고용정보원)의 직업적성검사결과
예상대로 객관성이 결여된 정확하지 않은 정보가 나왔다.
책을 많이 읽고 있는터라 언어력과 추리력이 높게 나왔고, 계산을 소홀이 하고 있기에 계산력이 부진했다. 선호 직업에 대한 평가에서는 무리가 없는 것으로 나왔다. 결론이 무엇인가? 하고 싶은 것을 하라는 거지 뭐....
zbxe 작업일지(6일차)
- table이 존재하지 않을 때(유저 srl이 올바르지 않을 때) exit();
2. zbxe에 api 추가
- 네이버 맵 api
- 다음 동영상 api
3. 페이지 추가
- 광고 안내
- 메뉴 제작
zbxe 작업일지(7일차)
- upload.php , upload_e.php
2. file 업로드 예외처리
- jpg, JPG만 가능
- 1K이하만 가능
3. opener.location.reload(); 명령어 적용
- popup을 일으킨 대상 프레임의 릴로드
zbxe 작업일지(8일차)
- while문으로 배열 fetch를 이용한 code 효율화
- syn되어 있는 user의 plan load 및 출력
- path color의 저장 값 사용
zbxe 작업일지(9일차)
- login 정보가 없으면, planning관련 메뉴 숨김
2. syn.php 개선
- syn 노드이면, syn 노드 끼리 동기화
- syn 노드의 내용은 visibility를 hidden으로 설정
- syn 노드 user의 내용은 visibility를 사용자(syn user)로 표시
- extmul을 이용한 확장
매트랩 구현 사전 학습
n은 1, 3, 5로 했으며,
-90에서 501도까지를 rad로 환산하여 계산하였다.
결과값은 img와 같이 얻었다.
홀수의 N만 넣으면, 구형파와 유사한 모양을 띤다.
img는 excel chart이다.
sin x + (sin 3x) / 2 + (sin 5x) / 5 의 그래프.
zbxe 작업일지(10일차)
- 검색결과를 보여주고, 결과로 나온 유저의 플랜 링크 수정
2. planning.php와 xe_official 내용 수정
- 합성도 보기 메뉴와 mid값에 따른 보여주기 결과 표시.
3. simple.php 수정
- vector의 색을 설정 값에 따른 색으로 보여줌.
창업일지 - 세금계산서, 부가세신고
하면 못 할 것 없겠지....
2. 부가세신고는
개인사업자는 신고하는 번거로움을 줄이고자 1년에 두번 신고합니다.
1기확정(1~6월분을 7/25까지), 2기확정( 7~12월분은 다음연도 1/25까지) 이렇게 두번 신고를 들어갑니다.
대신 1기 예정, 2기 예정때는 세무서에서 전기부가세신고된 납부세액의 50%를 고지서발송합니다.
이 예정고지서를 납부하면 확정신고시 납부세액에서 차감한 세액을 납부합니다.
------------------------------------------------------------------------
위와 같이 하면 된다.
------------------------------------------------------------------------
세금계산서 발행해 달라고 하면 공급가액(거래금액)에 10% 부가세를 받으시면 됩니다
물론 이돈은 나중에 부가세 신고하실때 나라에 내셔야 하는 돈입니다.
------------------------------------------------------------------------
부가세를 포함으로 자동 계산해 주는 계산툴이 호프집에 존재하는 것 같다. 그래서 12000원이 지불금이라면, 역 계산을 통해, 10910원이 지불금 부가세가 10%인 1090원정도가 붙어서 12000원이 지불금으로 되는 것이다. 이런 걸 만들어야 겠다.