среда, 29 июня 2011 г.

Перенос QtCreator проектов

У новичков которые хотят попробовать QtCreator часто возникают проблемы с переносом проектов в другой каталог или на другой компьютер. В следствии чего при сборке возникает проблема связанная с qmake. т.к вся сборка проходит в теневом режиме,т.е пользователь сам не вводит команды для сборки и прописывание путей к исходным файлам,то при переносе проекта все теневые настройки остаются для каталога до переноса
Пример :
Допустим при создании проекта в D:\Programming\qt\project\table. QtCreator автоматически создаст папку для сборки на том же уровне где и папка с исходниками,т.е это будет D:\Programming\qt\project\table-build-desktop например. Теперь мы решим перенести наш проект в другую папку,например D:\Programming\table и стереть все созданные им папки. После запуска *.pro файла и старта компиляции он нам скажет что не может найти папку для сборки и бла-бла-бла. К сожалению QtCreator туповат и не может сам создать папку для сборки проекта,поэтому приходиться там тыкать ему в "лицо" путь до папки для сборки,на скриншоте показано как это можно сделать. И ещё такой нюанс, если есть в пути русские буквы он тоже капризничает,так что не советую .

пятница, 24 июня 2011 г.

PyQt + GoogleAPI


Недавно заинтересовался языком python и решил сваять что-то. Так как я любитель Qt то и сваял gui с их помощью.
Задача была несложной.Ввести свои данные gmail и увидеть список своих документов на https://docs.google.com/.
Вот что получилось для примера:
main.py

from gui import *

if __name__ == '__main__':
import sys

app = QApplication(sys.argv)
window = Dialog()
sys.exit(window.exec_())

gui.py

#coding=windows-1251
from PySide.QtCore import *
from PySide.QtGui import *
import gdata.docs.service


class Dialog(QDialog):
def __init__(self):
super(Dialog,self).__init__()
# кодировка
QTextCodec.setCodecForCStrings(QTextCodec.codecForName("UTF-8"))
# добавляем всякие виджеты
self.setGui()
# конектим слоты
if(self.connect() == False):
print 'Connect do not work!'
def setGui(self):
# добавляем виджеты
self.labelEmail = QLabel('Email',self)
self.labelPassword = QLabel('Password',self)
self.lineEmail = QLineEdit(self)
self.linePassword = QLineEdit(self)
self.linePassword.setEchoMode(QLineEdit.Password)
self.list = QListWidget(self)
self.buttonGet = QPushButton('Get',self)
# создаём лаяут
self.grid = QGridLayout(self)
# кидаем туда виджеты
self.grid.addWidget(self.labelEmail,0,0)
self.grid.addWidget(self.labelPassword,1,0)
self.grid.addWidget(self.lineEmail,0,1)
self.grid.addWidget(self.linePassword,1,1)
self.grid.addWidget(self.list,2,0,1,2)
self.grid.addWidget(self.buttonGet,3,0,1,2)
def connect(self):
flag = False
flag = self.buttonGet.clicked.connect(self.on_buttonGetClicked)
return flag
# получаем список документов на доках хухла и добавляем в таблицу
def on_buttonGetClicked(self):
client = gdata.docs.service.DocsService()
client.ClientLogin(self.lineEmail.text(), self.linePassword.text())
documents_feed = client.GetDocumentListFeed()
for document_entry in documents_feed.entry:
self.list.addItem(document_entry.title.text)