일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- window size
- port
- driver
- 루비
- Chef
- VIM
- docker registry
- ssh command
- ssh
- VPN
- DevOps
- 우분투
- 도커
- sudo
- opsworks
- ubuntu
- golang
- docker-compose
- 패키지
- docker container
- VMware
- AWS
- Openswan
- 드라이버
- QT
- docker
- RUBY
- Linux
- 리눅스
- 방화벽체크
- Today
- Total
구리의 창고
QTreeWidget과 다르게 QTreeView는 itemClicked 시그날이 없다. 그래서 QAbstractItemView 에 있는 clicked 시그날을 활용해야한다. QObject::connect(ui.treeView, SIGNAL(clicked(const QModelIndex)), this, SLOT(itemClicked(const QModelIndex))); itemClicked 슬롯은 인자로 QModelIndex를 받게된다. 여기서 Index는 QTreeView에서 클릭된 값을 말한다. QModelIndex의 레퍼런스는 링크를 참고하면된다. http://doc.qt.nokia.com/4.7/qmodelindex.html 보통 클릭시에는 해당 인덱스의 데이터를 필요로 한다. 데이터를 가져오는 ..
메신저같은 프로그램을 만들다보면 한 개만 실행해야 할 때가 있다. 특별한 인자는 없으며 공유메모리를 사용해야한다. #include "MyApp.h" #include #include int main(int argc, char *argv[]) { QApplication a(argc, argv); MyApp w; QSharedMemory shared("very-very-unique-key"); if (!shared.create(512, QSharedMemory::ReadWrite)) { exit(0); } w.show(); return a.exec(); } 위와 같이 간단하게 해결!
일단 공식 문서는 아래 링크에 나와있다. http://doc.qt.nokia.com/4.6/appicon.html 각 플랫폼마다 설정하는 법이 다르다. 필요한 윈도우만 말해보도록 하겠다. 일단 아이콘 파일을 ico 형식에 맞춰서 만든다. 그 다음 appname.rc 파일을 만들고나서 텍스트 에디터로 오픈한다. 있는 내용 전부 지우고 IDI_ICON1 ICON DISCARDABLE "myappico.ico" 위와 같이 적어준다. 그 후, qmake 로 makefile을 생성해주고 appname.pro 파일을 열어서 RC_FILE=appname.rc 를 추가해준다. 그리고 nmake !!
QT프로그래밍을 하다보면 keyPressed 같은 이벤트를 자주 쓰게된다. 이럴 때 마다 기존 위젯을 상속받아 새로운 커스톰위젯을 만들어야하는 상황이 발생한다. 이거 매우매우매우매우 귀찮다.. 파일도 두 개씩 만들어지고!!! 찾아보니 이벤트 필터라는 것이 있다. MyWidget 에 lineEdit 과 nameEdit 이 있다고 가정했을 때 MyWidget::MyWidget(QWidget* parent) { lineEdit->installEventFilter(this); nameEdit->installEventFilter(this); } bool MyWidget::eventFilter(QObject* target, QEvent* event) { if (target == lineEdit) { //TO DO ..
http://doc.qt.nokia.com/4.7/qdesktopwidget.html QDesktopWidget 을 사용하면된다. 하단에 시작표시줄을 제외한 영역을 구하려면.. QDesktopWidget desktop; QRect rect = desktop.availableGeometry(); rect.right() 와 rect.bottom() 을 봐주면된다.
http://doc.qt.nokia.com/4.7/qt.html#WindowFlags QWidget::setWindowFlags 를 통해서 타이틀 바를 삭제 할 수 있다. Qt::WindowsFlags 에 보면 지정 할 수 있는 WindowStyle이 나와있다. 이 중에 Qt::Popup 설정.. WIdget 생성자에서 setWindowFlags(Qt::Popup) 한 줄이면 해결
QT 는 구현된게 생각보다 많다 QFileDialog::getOpenFileName(this, tr("Open a Movie"), currentMovieDirectory); return 형식은 QString 이다.
qt 에서 제공하는 기본예제도 좋다!! 하지만 좀 더 간단하게 정리해보겠다. 일단 트리에 아이템을 집어넣기 위해서는 QTreeWidgetItem을 사용해야한다. 자신의 부모노드를 알려주기 위해서 생성자에 해당 포인터를 넘겨준다. QTreeWidgetItem ( QTreeWidget * parent, int type = Type ) QTreeWidgetItem ( QTreeWidgetItem * parent, int type = Type ) A item - B Item - C Item -- D Item 위와 같은 트리를 구성해보도록 하자. 일단 A는 최상위 부모이다. 그러므로 아래와 같이 사용하면된다. QTreeWidget* tree = new QTreeWidget(); QTreeWidgetItem* it..
트리에서 마우스로 선택을 감지하기 위해서 clicked 시그널을 사용하다보면 마우스 오른쪽버튼까지 클릭으로 감지하는 수가 있다. 아래와 같이 QTreeWidget을 상속받아서 재정의하면된다. 1 #include 2 3 class TreeWidget : public QTreeWidget 4 { 5 public: 6 TreeWidget() 7 { 8 setColumnCount(1); 9 QList items; 10 for (int i = 0; i button()== Qt::RightButton) 17 return; 18 else 19 QTreeWidget::mousePressEvent(event); 20 } 21 22 void contextMenuEvent(QContextMenuEvent *event) 23..
트레이 아이콘 사용하기는 간단하다. 예제에서도 찾을 수 있는데 desktop/systray 에서 찾을 수 있다. 간단히 설명해보겠다. #include 선언 후.. 트레이를 사용 할 위젯에서 QSystemTrayIcon *tray = new QSystemTrayIcon(this); tray->show(); 하면 일단 트레이가 보이게된다. 클라이언트는 hide() 로 숨기거나 QWidget::setVisible(bool) 로 조절 할 수 있다.