crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

История благодарностей участнику wiz29 ::: Спасибо сказали: 94 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
28.10.2011, 10:13 простейший калькулятор
Цитата(ArhiZhek @ 28.10.2011, 9:07) *
только я не знаю из какого файла... выложу все...
исходники: main.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"
#include "math.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTextEdit textEdit;//?????Эти окна никогда не будут показаны
    QPushButton quitButton("rez");//?????????????????а надо ли их создавать:))
    QObject::connect(&quitButton, SIGNAL(clicked()), qApp, SLOT(quit()));//?????????????????????????

     QWidget window;//??? may be MainWindow window;
     window.show();
     return a.exec();
}


все ваши проблемы описаны в комментах с вопросами, надеюсь понятно где ошибки.
ArhiZhek,
27.10.2011, 14:28 QMap + QThread
1. QMap не потокобезопасен. Делай класс обертку для QMap, которая будет потокобезопасной.

"Какие еще существуют средства обмена данными между потоками в QT, если не брать во внимание наличие механизма сигнал/слот?" - QEvent, QSharedMemory
AXELman4ever,
18.10.2011, 13:30 Другое приложение посылает мне событие через SendMessage. Как поймать что оно шлет? (windows)
Цитата(sibmail @ 18.10.2011, 13:24) *
Другое приложение посылает мне событие через SendMessage. Как поймать что оно шлет? (windows)

Кому шлет, конкретному окну, приложению непосредственно или что то еще?

Если конкретному окну, тогда используй bool QWidget::winEvent ( MSG * message, long * result )
Если приложению - используй bool QCoreApplication::winEventFilter ( MSG * msg, long * result )
Но не забывай про то, что это платформозависимый код.
sibmail,
11.10.2011, 14:32 Создание проекта
Цитата(ArhiZhek @ 11.10.2011, 15:19) *
Цитата(Litkevich Yuriy @ 11.10.2011, 8:51) *
видимо речь идёт про шаблон в Qt Creatore

да-да, в Qt Creatore, может быть подойдет шаблон, для выше описанной программы, "Проект Qt Widget, GUI приложение Qt" ?

Подойдет.
ArhiZhek,
9.9.2011, 11:55 Реализация программы построения графиков ( декартовой С.К.)
Широкий такой вопрос, просто определись, для чего это тебе, если нужно просто решить задачу, то используй по возможности готовые решения, которые тебя устраивают в рамках данной задачи (сэкономишь просто уйму времени), если же цель разобраться с рисовальщиком Qt и возможно какими то алгоритмами (например, размещения подписей осей координат, отнюдь не тривиальная задача, как может показаться) то используй QPainter. Возможно qwt не подойдет для реализации твоей задумки по каким то причинам, нужна более четкая постановка вопроса.
Repeat,
2.8.2011, 15:43 QAbstractItemView, или внутренности Qt
разница именно в моменте удалении непосредственно самого объекта, в случае оператора delete объект будет удален сразу, в случае удаления посредством вызова deleteLater объект удалится, в момент передачи управления основному циклу обработки сообщений приложения, т.е. при таком вызове указатель на объект как правило еще валиден в рамках вызывающего участка кода. Что лучше использовать уже дело вкуса, если вариант с вызовом delete решает нужную задачу, то я выберу его.
Дмитрий -,
8.6.2011, 13:18 Что такое плагины?
про плагины на русском
Из твоего поста не понятна суть вопроса.
eugene,
8.6.2011, 12:28 QDir::setCurrent(bufPath)
Цитата(epishev @ 8.6.2011, 12:48) *
QString bufPath;
QDir dir;
bufPath = dir.currentPath();

QDir::setCurrent(bufPath+"/инт");

замени на
QString bufPath;
QDir dir;
bufPath = dir.currentPath();

QDir::setCurrent(bufPath+QString::fromLocal8bit("/инт"));

epishev,
7.6.2011, 13:03 глобальный поиск файла
напрямую такой функции вроде нет.
поробуй использовать либо QDir::entryInfoList для рекурсивного поиска по папкам нужного файла либо QStringList QFileSystemWatcher::files () const.
или возможно использовать платформо зависимое API для конкретной ос (под виндой например поможет HANDLE WINAPI FindFirstFile(
__in LPCTSTR lpFileName, __out LPWIN32_FIND_DATA lpFindFileData))
epishev,
6.6.2011, 16:01 QColorDialog возвращает значение при закрытии
QColorDialog::getColor

Это статическая функция
замени на
QColorDialog cd;
    QString color;
    if(cd.exec() == cd.Accepted){
         color =     cd.currentColor ().name();
        plainTextEdit->textCursor().insertText(color);
    }
ruzik,
31.5.2011, 10:20 Qtcreator как перенапривить вывод cout ?
Цитата(flankerr @ 31.5.2011, 10:11) *
Подскажи как ? :rolleyes:

std::streamsize QDebugStream::xsputn(const char *p, std::streamsize n) {
    m_String.append(p, p + n);
//    unsigned int pos = 0;
//    while (pos != std::string::npos) {
//        pos = m_String.find('\n');
//        if (pos != std::string::npos) {
//            std::string tmp(m_String.begin(), m_String.begin() + pos);
//            qDebug(tmp.c_str());
//            m_String.erase(m_String.begin(), m_String.begin() + pos + 1);
//        }
//    }
    qDebug(m_String.c_str());
    m_String.clear();
    return n;
}

примерно так.

Цитата(flankerr @ 31.5.2011, 11:06) *
И всё таки ради консоли такой гемор это просто алес капут....

ну 150 строк кода для, по сути, универсального метода не гемор, а профит на лицо.
flankerr,
30.5.2011, 18:43 Qtcreator как перенапривить вывод cout ?
Да подобный код не работает для библиотек, причина тому в том, что реально в каждом модуле экземпляр std::cout свой.
данная статья возможно поможет тебе написать нужный код. В рамках одного приложения (без участия других модулей, приведенный мной способ железно работает)

Цитата(RazrFalcon @ 30.5.2011, 19:28) *
Хм, у меня тоже std::cout выводит после завершения. Linux.

Просто нужно немного модифицировать код wrapper'а, тогда будет выводить сразу.
flankerr,
30.5.2011, 14:02 Qtcreator как перенапривить вывод cout ?
Здесь нет никакого переопределения, если ты перенаправишь вывод с std::cout в qDebug() получишь нужный результат (будешь видеть в консоли qtcreator'а то что выводиться через std::cout). Как я понимаю сама GUI апликуха написана тобой, и есть "чужие" модули, вывод std::cout которых ты хочешь увидеть?

если это так, то тот способ, который использует QDebugStream тебе подойдет. Нужно лишь однажды инициализировать перенапрвление, после создания объекта QApplication в main функции твоего приложения! Больше никаких "телодвижений" делать будет ненужно! все что будет напрявляться в std::cout автоматически попадет в консоль QtCreator'а или консоль MSVC без разницы в каком модуле будет вызван вывод через std::cout

Цитата(flankerr @ 30.5.2011, 14:21) *
Ещё раз подчеркну что считаю переопределние cout в qDebug весьма глупой затеей т.к. в дальнейшем qDebug полбюбому будет использовать что-то аля cout

qDebug не будет использовать ничего аля std::cout, в лучшем случае функции C типа printf и тп. я бы не стал заморачиваться:)
flankerr,
6.5.2011, 8:56 QTreeWidget
QTreeView::expandAll ()
epishev,
5.5.2011, 16:19 Получение аргументов в GUI приложении
QCoreApplication::arguments();
RazrFalcon,
3.5.2011, 17:03 Изменения координат виджетов в тулбаре
если ты внимательно посмотришь в QtDesigner на виджет prevnextWidget.ui, то в том проекте, который выложил я, имеется компоновщик для всего виджета, у тебя был компоновщик только для 2х кнопок, этого не достаточно. В моем примере компоновщик кнопок, встроен в компоновщик для всего виджета, разница только в этой неприятной мелочи:)
ruzik,
3.5.2011, 14:40 Изменения координат виджетов в тулбаре
Вот код, ты используешь наследование от UI классав, поэтому компилер выдавал ошибки, ну и не используешь компоновщики, поэтому на тулбаре бы ничего не смог увидеть, если бы даже все добавилось.

не забывай прикреплять файлы проекта к своим исходникам
ruzik,
3.5.2011, 11:24 Изменения координат виджетов в тулбаре
Цитата(ruzik @ 3.5.2011, 12:17) *
Где mainToolBar - главный тулбар, объявлен программно


//это не реальный класс
class MyMainWindow : public QMainWindow
{
  private:
    Ui::ToolBarWidget m_toolBar;    
};
....................................................
QWidget* pToolBarWidget = new QWidget;
//m_toolBar - объект ui
//Ui::ToolBarWidget - это получаешь в дизайнере и создаешь объект в нужном классе.
m_toolBar.setupUi(pToolBarWidget);
QAction* pAction;
pAction = mainToolBar->addWidget(pToolBarWidget);
pAction->setVisible(true);

ruzik,
3.5.2011, 10:22 Изменения координат виджетов в тулбаре
я делаю так:
m_pToolBar = new QToolBar(0);
QWidget* pToolBarWidget(new QWidget);
m_toolBar.setupUi(pToolBarWidget);
QAction* pAction;
pAction = m_pToolBar->addWidget(pToolBarWidget);
pAction->setVisible(true);


сам виджет делаешь в QtDesigner вместе с компоновщиками и spacer'ами и не паришься:)
ruzik,
29.4.2011, 10:28 Заполнить виджет окна...
Цитата(silver47 @ 29.4.2011, 11:23) *
Я ничего кроме как создавать свой класс, унаследовав его от QTableWidget и в нем переопределять resizeEvent, чтобы он испускал сигнал изменения размера, или сам менял размеры ячеек, посоветовать не могу. Господин ernie не желает делиться секретом :). А у меня знаний не хватает :(.

Можно использовать eventFilter для обработки, если нет желания наследоваться.
fortero,
28.4.2011, 8:54 Глупый вопрос по QConcurentRun
Цитата(Litkevich Yuriy @ 27.4.2011, 19:24) *
это работает?

а с какой радости, извините, это не должно работать?

Цитата(silver47 @ 27.4.2011, 19:28) *
Ну по крайней мере выполняется. Пока операция занимает порядка 100 миллисекунд....


Проверить можно элементарно, поставив sleep на несколько секунд.

http://doc.trolltech.com/latest/qtconcurrentrun.html читаем раздел Using Member Functions
Litkevich Yuriy, silver47,
26.4.2011, 11:25 Глупый вопрос по QConcurentRun
void MainWindow::updateUI(){
    if(socket){
        if (socket->isOpen() && socket->isEncrypted() && mainDB.isOpen()){ // Соединение с сервером установлено            
            // отсюда нужно вызвать this->createCache();
                       QtConcurrent::run(this, &MainWindow::createCache);

        }
    }
}

void MainWindow::createCache(){
    // some work
}

silver47,
19.4.2011, 15:40 Как связать итемы на сцене с другими данными?
Цитата(epishev @ 19.4.2011, 16:26) *
Цитата(wiz29 @ 19.4.2011, 15:21) *
что за объект buf? char*?


QString buf

 if(bufListObject.at(i)->data(1)==item->text(0))

выполняется? если нет то, нужен дамп строк в консоль как QString (лучше выводить в дебаге строки в кавычках, чтоб увидеть все пробелы на конце)
qDebug()<<"\'"<<bufListObject.at(i)->data(1).toString()<<"\'";
qDebug()<<"\'"<<item->text(0)<<"\'";
epishev,
14.4.2011, 8:59 QTableWidget с CheckBox'ом внутри
там поправка в коде выше
pItem->setCheckState(Qt::Unchecked);
silver47,
13.4.2011, 14:43 Передача сигналов между потоками
потому что сам объект потока C_ptr создан в контексте потока А, так же как и B_ptr.

те объекты которые будут созданы в контекстах потоков B_ptr и С_ptr, будут отрабатывать свои слоты соответственно в рамках времени выделенного потокам B_ptr и С_ptr соответственно.

например (псевдокод)
class BThreadObj
: public QThread
{
   protected:
      void run(){
             QObject* objWithBThreadObjContext(new QObject);
             exec();      //цикл обработки событий
      }
};
quarz,

4 страниц V  < 1 2 3 4 >
RSS Текстовая версия Сейчас: 28.1.2022, 21:53