2795
|
Qt / Общие вопросы / Re: QAbstractFileEngine
|
: Ноябрь 17, 2009, 21:27
|
а) я проверял на :/ (для QDir работает/QFileSystemModel - нет) б) глядел сорцы (там вроде жесто задано получение драйвов в винде) в) в доке сказано что setRootPath не перестраивает модель => не меняется рут но я хочу ошибаться)
|
|
|
2797
|
Qt / Общие вопросы / QAbstractFileEngine
|
: Ноябрь 17, 2009, 19:38
|
Кто-нибудь видел где-нибудь модель, умеющую работать с произвольными QAbstractFileEngine'ами?.. А то не QDirModel ни QFileSystemModel не захотели работать:(
|
|
|
2799
|
Qt / Мультимедиа / Re: Поддержка JPEG
|
: Ноябрь 17, 2009, 14:39
|
160 метров это дебаг скорее всего... нужно смотреть, где-то есть и те и те библиотеки, надой найти:) Мне самому предстоит в скорости делать сборку программы, но уж очень не хочется юзать статику, так что отпишись, если результаты будут
|
|
|
2800
|
Qt / Мультимедиа / Re: Поддержка JPEG
|
: Ноябрь 17, 2009, 11:23
|
поищи по форуму, возможно в разделе мака, кто-то клал ссылку на документацию как развертывать под мак. Также вбей в ассистанте что-нибудь типа deploy on mac. Там надо фреймфорки кидать в .app, если я правильно помню. А плагины 100% кидаются в *.app/contens/MacOS/imageformats как и в винде added: вот, нашел http://www.prog.org.ru/topic_9461_0.html
|
|
|
2801
|
Qt / Общие вопросы / Re: Связывание кнопки со слотом
|
: Ноябрь 17, 2009, 09:49
|
В доке написано, что при наследовании QObject должен первым стоять. На деле выходит так, что у тебя класс-родитель (не обязательно QObject, но его наследник) должен содержать мета-информацию. Моку лень видимо смотреть всю иерархию чтобы самому определить какой из классов-предков твоего класса - наследник QObject
|
|
|
2803
|
Qt / Общие вопросы / connect
|
: Ноябрь 14, 2009, 00:20
|
В общем попробую обрисовать ситуацию. Открывается файл. Создается виджет-редактор, помещается во вкладку. На сигнал currentChanged(int) tabWidget'а повешен слот. В этом слоте для объекта treeView ставится модель. Модель благополучно ставится. Внимание странное поведение - код: void MainWindow::changeCurrentArchive(ArchiveView * newView) { if (newView) { handler->setCurrentArchiveView(newView); ui->treeView->setModel(handler->proxy()); ui->treeView->sortByColumn(0, Qt::AscendingOrder);
ui->treeView->resizeColumnToContents(0); ui->treeView->hideColumn(1); ui->treeView->hideColumn(2); ui->treeView->hideColumn(3); }
Все строки по изменению состояния модели (прятанье колонок и тп) НЕ ОТРАБАТЫВАЮТ. Если сделать Qt::QueuedConnection на сигнал, то тогда сработает... Где я не о5 прав? весь код: connect(ui->tabWidget, SIGNAL(currentChanged(int)), SLOT(changeTab(int))/*, Qt::QueuedConnection*/);
void MainWindow::open(const QString & path) { qDebug() << "open";
QString fileName = path; if (fileName == "") fileName = QFileDialog::getOpenFileName(this, tr("Select Archive File"), currentFile); if (fileName == "") return;
openInTab(fileName); currentFile = fileName; appendCurrentFile(fileName); setArchiveActionsEnabled(true); qDebug() << "test"; //тут уже работает!!!! // ui->treeView->sortByColumn(0, Qt::AscendingOrder); // ui->treeView->hideColumn(1); }
void MainWindow::openInTab(const QString & path) { qDebug() << "MainWindow::openInTab"; manager->open(path); QMPQAbstractEditor * editor = manager->getEditor(path); if (editor) { ui->tabWidget->addTab(editor, QFileInfo(path).fileName()); //тут эмит сигнала ui->tabWidget->setCurrentWidget(editor); editor->open(path); } }
void MainWindow::changeTab(int index) { qDebug() << "MainWindow::changeTab"; QMPQAbstractEditor * editor = qobject_cast<QMPQAbstractEditor *>(ui->tabWidget->widget(index)); Q_ASSERT(editor);
ArchiveView * view = qobject_cast<ArchiveView *>(editor); if (view) changeCurrentArchive(view); disconnect(editor, 0, this, 0); }
"трейс": open MainWindow::openInTab MainWindow::changeTab MainWindow::changeCurrentArchive test
|
|
|
2805
|
Qt / Общие вопросы / виртуальные слоты
|
: Ноябрь 11, 2009, 16:40
|
Собственно вопрос по виртуальным слотам. В доке написано что они жутко медленные. Почему? Ведь такая реализация делает слот open виртуальным (за исключением небольшого неудобства с тем что переопределять надо не слот, а лишнюю функцию): #ifndef QMPQABSTRACTEDITOR_H #define QMPQABSTRACTEDITOR_H
#include <QObject> #include <QDebug>
class QMPQAbstractEditor : public QObject { Q_OBJECT public: QMPQAbstractEditor(); virtual void vopen() = 0;
public slots: void open() {this->vopen();} };
class test :public QMPQAbstractEditor { void vopen() {qDebug() << "lol";} };
#endif // QMPQABSTRACTEDITOR_H
QMPQAbstractEditor * e = new test(); connect(ui->action, SIGNAL(triggered()), e, SLOT(open())); //печатает lol
|
|
|
|
|