crossplatform.ru

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

История благодарностей участнику Sokoloff ::: Спасибо сказали: 50 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
21.11.2011, 14:34 Как добиться подобного внешнего вида?
Цитата(Флинт @ 21.11.2011, 11:47) *
Цитата(wiz29 @ 11.11.2011, 17:33) *
попробуй использовать QString QFontMetrics::elidedText ( const QString & text, Qt::TextElideMode mode, int width, int flags = 0 ) const


Добавляет три точки, где текст обрывается, не знаю чем это может помочь 8)

Пробывал через QFontMetrics узнавать высоту каждой строчки, но не понял как вычислить высоту абзаца.

Надо установить свойство uniformRowHeights в false. Перекрыть SizeHint.
Для получения размера текста можешь использовать параметр boundingRect в QPainter::drawText.
Флинт,
28.10.2011, 10:04 простейший калькулятор
Вы запутались с созданием widget-ов. Есть 2 подхода:
  • Используется дизайнер форм, и виджеты рисуются в нем.
  • Форму и виджеты создаются в коде, не используется ui-файл
Бывает, что на форму из дизайнера виджеты добавляются в коде, но на это должны быть причины. Скажем их количество может меняться. Это не Ваш случай.

Предлагаю начать с нуля. Создайте в креаторе новый проект "GUI приложение", форму наследуйте от MainWindow (хотя здесь это не принципиально).
Откроется редактор формы, накидайте на него 3 line edit-а и кнопку. По умолчанию эдиты имеют имена lineEdit, lineEdit_2 и lineEdit_3, кнопка - pushButton. Пусть так и называются.
Посмотрите на код:
// main.cpp
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}
В большинстве программ в эту функция Вам ничего дописывать не придется. Может только перевод подключать.

//mainwindow.h
#include <QMainWindow>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};


//mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}
Это минимальный код для формы. Можете запустить проект (Ctrl+R), покажется форма.
Теперь по клику на кнопке скопируем содержимое lineEdit в lineEdit_2.
Добавляем слот copyText и привязываем его к сигналу кнопки
//mainwindow.h
#include <QMainWindow>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

private slots:
    void copyText();
};


//mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(copyText()));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::copyText()
{
    ui->lineEdit_2->setText(ui->lineEdit->text());
}

Надеюсь стало понятнее, как обратиться к виджетам на форме.
ArhiZhek,
19.9.2011, 13:41 Описание глобальных переменных
Отличие между первым и остальными вариантами простое.
В первом варианте используется глобальная переменная, она одна на всех, все классы будут иметь одно значение. Если кто-то где-то поменял ее, все увидят новое значение. В других вариантах каждый объект класса имеет свою переменную.

Пример:
int globalVar;

class Class
{
public:
    Class(QString className):
        name(className)
    {
      localVar = 0;
    }

    void print()
    {
      globalVar++;
      qDebug() << name << " global:" << globalVar;

      localVar++;
      qDebug() << name << " local:" << localVar;
    }

private:
    int localVar;
    QString name;
};


...
    globalVar = 0;
    Class *c1 = new Class("Class1");
    Class *c2 = new Class("Class2");

    c1->print();
    c2->print();
    c1->print();
    c2->print();


Выведет
"Class1"  global: 1 
"Class1"  local: 1
"Class2"  global: 2
"Class2"  local: 1
"Class1"  global: 3
"Class1"  local: 2
"Class2"  global: 4
"Class2"  local: 2


Теперь про 2 и 3 варианты. В 2 создастся экземпляр класса (вызывается конструктор без параметров), а потом присваивается значение. В 3 сразу создается экземпляр с нужным значением, т.е. используется конструктор с параметром. Для int-а разницы нет, но если вместо будет класс (особенно тяжелый), то 3-й выриант эффективнее.

Еще есть такое понятие как безопасный конструктор, но пока можешь с этим не парится.
RazrFalcon,
13.9.2011, 9:46 координаты мыши на собтвенном виджете
Цитата(yuramuv @ 13.9.2011, 2:43) *
Спасибо. Не смог разобратся с мышкой.
...
Не разобрался, какие параметры нужно передавать в конструктор.
Может есть другие способы
Что-то ты накрутил сложного, все гораздо проще. Есть 2 варианта:

1. Если надо получать координаты курсора в обработчиках событий мыши. Классический пример, это показ выпадающего меню по клику. Тут все просто, методы mouseXXXEvent принимают параметр типа QMouseEvent. У него есть 2 метода pos и globalPos - локальные и глобальные координаты соответственно. Пример:
void MainWindow::mousePressEvent(QMouseEvent * event)
{
    qDebug() << "Global:" << event->globalPos();
    qDebug() << "Local:" << event->pos();
}


2. Необходимо получить координаты мыши в произвольном месте программы. Здесь нет QMouseEvent, но всегда можно воспользоваться QCursor. Пример:
void MainWindow::foo()
{
    QPoint p = QCursor::pos();

    qDebug() << "Global:" << p;
    qDebug() << "Local: " << this->mapFromGlobal(p);
}

yuramuv,
12.9.2011, 11:24 координаты мыши на собтвенном виджете
Цитата(yuramuv @ 12.9.2011, 5:33) *
Создал форму, на ней verticalLayout. Создал новый виджет по этой статьи Урок: QPainter для начинающих
Несколько вопросов.
1. Как узнать координаты мыши на виджете??
Если по событию мыши, то смотри QMouseEvent::pos и события мыши QWidget::mousePressEvent, QWidget::mouseReleaseEvent, QWidget::mouseDoubleClickEvent, QWidget::mouseMoveEvent.

Если в произвольном месте программы, то смотри QCursor::pos, QWidget::mapFromGlobal

Цитата(yuramuv @ 12.9.2011, 5:33) *
2. Что делает этот кусок кода? (из ссылки сверху)
QMainWindow::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }

По событию QEvent::LanguageChange переводит интерфейс. http://f1-delphi.ru/books/qt_4_programmiro...enie_yaz/4.html

Цитата(yuramuv @ 12.9.2011, 5:33) *
3. При изменении размера формы, виджет сохраняет свой начальный размер.
Создал некую функцию
void MainWindow::change_size()
{   int _w=width();
    int _h=height();
    ui->verticalLayoutWidget->setGeometry(0,0,_w-160,_h);
}

которая вызывается когда меняются даные в doubleSpinBox. Как сделать чтоб она вызывалась при изменении размера формы?
Переопределить QWidget::resizeEvent и дергать ее в этом методе.

yuramuv,
9.9.2011, 23:16 Реализация программы построения графиков ( декартовой С.К.)
Цитата(Repeat @ 9.9.2011, 19:22) *
Спасибо , что откликнулись .
Мне нужно главное решить задачу , т . е. реализовать подобное построение графиков (см. пример ) , используя то , что вы мне поможете выбрать.
...
Не могли бы Вы обосновать , чем лучше qwt ? лично меня не устраивают оси данной библиотеки по умолчанию , они позволяют рисовать только в 1 четверти .

Если " главное решить задачу" используйте готовое.
Сам я с qwt не работал, но насколько знаю эта библиотека самая популярная для инженерных программ, и в частности для построения графиков. Поэтому ее и посоветовали.

Цитата(Repeat @ 9.9.2011, 19:22) *
Sokoloff
Спасибо огромное за ссылку на данный учебник , обыскался я нормального учебника по Qt .

Ну Бланшет и Шлее это классика. Если еще не видели, почитайте еще эту тему.

Цитата(Repeat @ 9.9.2011, 19:22) *
wiz29
Если можно , могли бы Вы скинуть ссылку на готовые решения подобной моей задачи . Спасибо.

Вот что-то похожее и с исходниками.
Repeat,
9.9.2011, 13:59 [bash] Проверка выполнения команды и перенаправление вывода
В свое время сталкивался точно с такой проблемой. Вот здесь несколько решений.
igor_bogomolov,
7.9.2011, 9:45 QTableWidget, Как при выделении ячейки вывести на её месте другой виджет?
Цитата(Strikevld @ 6.9.2011, 20:56) *
Что нужно сделать при сигнале cellActivated чтобы вместо текста вывести QComboBox
При этом чтобы текст никуда не делся,
Надо чтобы другой виджет(этот самый QComboBox) как бы перекрывал ячейку (это касается не только QComboBox)
При выделении другой ячейки этот виджет будет перемещён!

По моему такое можно сделать через делегата.
Strikevld,
11.12.2010, 11:58 Так ли логиниться на почту?
Цитата(Rocky @ 10.12.2010, 12:36) *
Всем привет! Разбираюсь с QtNetwork/webkit. Для понимания сути решил написать программу, которая бы логинилась на сайт и получала новые письма.

Первое , возьми нормальный редактор (например бесплатный pspad), который умеет нормально показывать юниксовае переводы строк, станет понятнее. Второе поставь снифер (wireshark) и/или поставь что-то типа firebug и смотри что посылает/получает браузер.
Эта строка - cookie.

IMHO не самый удачный вариант для начала изучения. Я бы на твоем месте вначале потренировался с GET запросами (скажем поиск по гуглу), потом простые POST запросы, а потом уже погружение в дебри HTML-я (COOKIE, AJAX, сессии и.т.п). Это если тебе нужна работа с веб-страницами, а если интересует только передача данных по сети, то достаточно разобраться с первым пунктом.
Rocky,
1.12.2010, 19:21 Сообщить об ошибке в переводе
В описании QDomDocument QDomNode::ownerDocument текст
Цитата
Returns the document to which this node belongs.

Переведен неверно
Цитата
Возвращает тип текущего документа.

Я предлагаю
Цитата
Возвращает документ, к которому принадлежит данный узел


Аналогично и для старых версий.
alex977,
14.11.2010, 22:14 ООП в Python, а есть ли?
Цитата(Litkevich Yuriy @ 14.11.2010, 19:37) *
Вроде ООП в питоне есть, и вроде наследование есть.

Но почему-то наталкиваюсь на проблему:
class SubClass(BaseClass):
    def __init__(self):
        BaseClass.__init__(self)
        # ...
        method(args)
где method(args) - это метод базового класса или ещё дальше по иерархии.
При таком варианте получаю ошибку:
Цитата
NameError: global name 'method' is not defined

почему?

неужели нужно писать имя базового класса перед методом и, как следствие, всё время помнить в каком из родительских классов этот метод был введён?


В отличие от C++ питон не подставляет по умолчанию self(сишный this). Т.е. правильно вызывать надо так:
lass SubClass(BaseClass):
    def __init__(self):
        BaseClass.__init__(self)
        self.method(args)

Litkevich Yuriy,
5.10.2010, 20:02 Как понять что программа работает в двух потоках?
Цитата(RazrFalcon @ 5.10.2010, 19:21) *
Еще парочку моментов.
1) Когда я создаю 2-а потока, то на самом деле их 3-и.
2) Я не выбираю ядра, то есть сама система выбирает. Она может их (потоки) поменять местами во время работы?
3) Когда прога работает основным потоком, а потом я создаю 2-й поток, то он помещается на свободное ядро (1-е, 2-е, 3-е и тд).
4) Как я понял с гуем и файлами лучше работать в один поток.

1) Да ты создаешь не 2-а потока а 2-а дополнительных потока. Ведь main тоже должен выполняться в потоке, поэтому у любой программы сразу есть один поток, это "основной поток". В нем отрисовываются/обновляются контролы. Замечал наверное, иногда окна программ становятся белыми, и программы не отвечают на нажатия кнопок и мыши, это когда основной поток чем то сильно занят и не успевает обработать GUI.

2) Ядра ты не выбираешь, система сама лучше знает как разместить задачи. Ведь в системе кроме твоей программы еще куча всего крутиться, и другие программы то-же хотят поработать, так что это задача системы оптимально раскидать задачи по ядрам.

3) Скорее всего да. Хотя на 100% гарантировать нельзя, смотри п.2 про чужие программы.

4) С гуем лучше работать не просто в один поток а в основном потоке. А что значит с файлами? Простая ситуация если одновременно надо обрабатывать несколько файлов - можно каждый файл обрабатывать в отдельном потоке. Но надо помнить о синхронизации между потоками. Гораздо более сложная ситуация если надо обрабатывать один большой файл, если работу можно разбить на одновременные подзадачи, то можно обрабатывать части файла в несколько потоков. Но это гораздо сложнее с точки зрения синхронизации. В общем делать потоки, или нет, и сколько зависит от задачи.


P.S. Какие у тебя разнообразные интересы и GUI/CLI, и библиотеки, и время выполнения, и потоки. Ты просто изучаешь разные вещи или что-то реальное пишешь, во втором случае IMHO что-то ты с дизайном программы мудришь, возможно твою задачу можно решить проще. Опиши задачу, тебе подскажут куда копать.
RazrFalcon,
29.9.2010, 14:32 Создание и использование динамических библиотек
Цитата(RazrFalcon @ 29.9.2010, 14:55) *
Я дико извиняюсь за то что вызвал сей спор, но я к сожалению так и не нашел ответы на выше написанные вопросы =)

Почитай про разделяемые библиотеки в linux http://ftp.linux.kiev.ua/pub/docs/developer/_misc_/aaa.html. В этой статье как раз ответы на твои вопросы.
RazrFalcon,
24.9.2010, 15:46 QT CLI+GUI
Цитата(RazrFalcon @ 24.9.2010, 15:04) *
Цитата(Sokoloff @ 24.9.2010, 13:49) *
Но есть и другой вариант, весь функционал программы выносишь в библиотеку, и CLI и GUI используют эту библиотеку. В CLI остается только проверка входных параметров, печать ошибок и результатов работы. А в GUI только формы.

Вот как сделать туже библиотеку я и не знаю, не знаю как передать в cli параметры, как принять все эти --help/-in "in" и тд.
Как из гуй подключится к lib, в моем случае .so как я понимаю и тд.


Как сделать библиотеку:
http://habrahabr.ru/blogs/cpp/101994/
http://mech.math.msu.su/~zubr/library.html
И еще примерно 53800

Про параметры написано в QApplication и в QCoreApplication. Кстати там же описано как сделать приложение, которое будет работать в двух режимах CLI/GUI.

RazrFalcon,
17.9.2010, 23:39 XML как входные данные
Цитата(AD @ 17.9.2010, 23:30) *
Вот если своевременно узнаю о всех бедах (некоторые уже перечислили), то это будет - плюс

Как уже говорили "у каждого формата есть рамки", каждый формат надо использовать с умом.

На мой взгляд так.

XML хорош если надо хранить древовидные структуры, вложенность тегов интуитивно понятна пользователям. Имена тегов избыточны, но зато несут доп. информацию для пользователя, видно какой тег закрывается. Недостаток - объем.

JSON - то же для деревьев, и сложных структур. Объем гораздо меньше, поэтому хорошо подходит для систем которые генерируют данные программно, не зря в AJAX-е в последнее время используют его. На мой взгляд разобраться в нагромождении закрывающих скобок, сложнее чем в тегах.

Для конфигов лучше использовать INI или даже простой конфиг ключ=значение.

Если нужны табличные данные, то можно посмотреть в сторону CSV.

Как то так.
AD,
16.9.2010, 16:41 Совместное редактирование odt файлов.
Цитата(Cergey @ 16.9.2010, 16:55) *
УУУУ скоко идей спс Sokoloff,

А вообще лучше сделать надо без веба, с созданием своего алгоритма сравнения и потом слития.

Про это ИДЕИ ПЛИЗ!!!! :friends:


Ты все таки открой секрет, ты будешь допиливать OO, писать свой редактор или писать сервер коллективной работы?

Первое, надо выделить мимнимальный квант, который будем мерджить автоматом. IMHO разумно взять один абзац, т.е. если я поменял 1-й абзац, а ты поменял второй, то они сохраняться автоматом, если мы поменяли один и тот-же, то должен выскочить диалог. А дальше смотри алгоритмы разных diif-ов, как наиболее грамотно определить изменили абзац или перед ним вставили другой, или предыдущий удалили, и.т.д.

А общий алгоритм примерно такой, перед сохранением документа считываем файл с диска, сравниваем новое содержимое в памяти и прочитанное с диска автоматически сливаем изменения которые можем разрулить, если обнаружились конфликты выводим диалог, и пусть пользователь решит, какой вариант он хочет использовать.

Это все довольно сильно похоже на системы контроля версий, почитай про их алгоритмы, я думаю там почерпнешь идей.


Cergey,
16.9.2010, 16:09 XML как входные данные
Сразу скажу, я не являюсь фанатом XML-я, формат как формат, не хуже прочих. На мой взгляд XML вначале незаслуженно превозносили, а теперь незаслуженно демонизируют. Просто его надо использоавать там, где надо.
Первое и главное, не надо заставлять человека читать и писать XML руками. XML - машинный формат, с возможностью знающему человеку иногда подправить его руками.

Цитата(Litkevich Yuriy @ 16.9.2010, 16:34) *
* не читаемость/не проверяемость человеком.
У других с читаемостью то же не очень, в JSON-е от скобок в глазах аж. рябит. И уж если профунькал скобку, умаешся искать где, в XML по крайне мере закрывающий тег можно найти через Ctrl+F.

Цитата(Litkevich Yuriy @ 16.9.2010, 16:34) *
* для считывания данных, нужно прочитать весь файл, чтобы убедится в его корректности (validating)
** невозможность читать большие файлы по частям
А у других, как ты убедишься в корректности не прочитав весь файл, может в конце скобки или запятой не хватает? Большой XML можно разбить на несколько и объединить через стандартный include. Я не в курсе, у перечисленных альтернативных форматов есть похожий стандартный механизм?

Цитата(Litkevich Yuriy @ 16.9.2010, 16:34) *
* избыточность данных, в разных ситуация по разному, приведённый мною пример содержит свыше 75% бесполезной информации
** низкая скорость чтения, повышенная загрузка канала передачи данных
Это да, здесь спорить не буду проблема есть, и прочие форматы однозначно здесь выигрывают.


AD,
16.9.2010, 9:52 Совместное редактирование odt файлов.
Цитата(Cergey @ 16.9.2010, 9:20) *
Для университета. Курсовая.
alex977, Спс конечно.

Идеи плиз!!! Легко и можно чтоб с ограничениями реализовать слияние изменений в файл, если его редактировали ОДНОВРЕМЕННО 2 разных людей.

Может хоть техники подскажите???

Да да очень технику хотелось бы найти!!!! :lol:


Вообще скажи что конкретно нужно? Потому что решение сильно зависит от задачи. Что ты будешь доделывать, сам редактор или северную часть?

Можно например написать свой WebDAV сервер, перехватить сохранение документа и обрабатывать слияние. Хранить документы можно по абзацам в системе контроля версий.
Но, IMHO, это уже больше чем на курсовик.

P.S. Можно и без WebDAV-а перехватить сохранение док-та и вместо/вместе сохранения файла посылать данные в систему контроля версий.
Cergey,
1.9.2010, 11:25 как реализовать удалённое администрирование компа?
Цитата(Litkevich Yuriy @ 1.9.2010, 11:36) *
Задача:
удалённо администрировать компьютер.

Бывает ли такое устройство?


Ну, вот что-то похожее, погугли еще по "KVM ethernet".
Самопал.
Для серверов у HPесть iLO2, у других производителей есть аналогичные решения.
Litkevich Yuriy,
18.6.2010, 16:50 Сообщить об ошибке в переводе
Самый конец страницы http://doc.crossplatform.ru/qt/4.6.x/model...w-delegate.html

Цитата
Делегаты не испускают эти подсказки, но тогда они будут слабее интегрированы в приложения и будут менее удобны, чем те, что испускают подсказки для поддержки общепринятых действий редактирования.

Цитата
Delegates do not have to emit these hints, but those that do not will be less integrated into applications, and will be less usable than those that emit hints to support common editing actions.


Переведено, вроде правильно, но звучит как-то коряво, может лучше:

Цитата
Делегаты могут не испускать эти подсказки, но тогда ...

или
Цитата
Делегаты не обязаны испускать эти подсказки, но тогда ...

Litkevich Yuriy,
4.12.2009, 10:45 Создание ссылки-линка (.lnk)
Насколько помню, только через COM
Например http://rxlib.ru/faqs/bcbfaq/Create%20a%20s...%20desktop.html

Меня в свое время поразило, что такой простой объект как ярлык сделали так сложно, хотя хватило бы простого инишника.
AD,
21.5.2009, 10:42 Обновление данных в модели-представлении
Насколько я понял, в функции открытия файла ты читаешь его содержимое и заполняешь какие-то внутренние структуры с данными. Вот сразу после того, как ты загрузил все из файла, вызови метод reset для своей модели( http://www.doc.crossplatform.ru/qt/4.5.0/q...odel.html#reset ).
AD,
6.5.2009, 13:46 Ошибка в статье "Сравнение Qt и Java"
Цитата
Также C++ выигрывает за счет более лучших средств разработки.
Также C++ выигрывает за счет лучших средств разработки.


Цитата
Что касается сравнения GUI-библиотек, Swing и Qt, то видно, что более худшая производительность Java-программ делает платформу Java/Swing менее подходящей для разработки GUI-приложений, даже при сравнимом опыте программирования.

Что касается сравнения GUI-библиотек, Swing и Qt, то видно, что более низкая производительность Java-программ делает платформу Java/Swing менее подходящей для разработки GUI-приложений, даже при сравнимом опыте программирования.



Цитата
В отличие от Swing, Qt не навязывает программисту парадигму программирования Model-View-Controller, поэтому в результате Qt-программы получаются более краткими.

В отличие от Swing, Qt не навязывает программисту парадигму программирования Model-View-Controller, поэтому в результате Qt-программы получаются короче.



Цитата
Независимое научное исследование и полученный практический опыт эксплуатации показывают, что предпочитаемость использования Java во многих случаях чаще всего неоправданна, а комбинация C++/Qt является более лучшей.

Независимое научное исследование и полученный практический опыт эксплуатации показывают, что предпочитаемость использования Java во многих случаях неоправданна, а комбинация C++/Qt является лучшей.


Цитата
В целом, C++/Qt является более лучшим решением, в особенности для разработки GUI-приложений.
В целом, C++/Qt является более хорошим решением, в особенности для разработки GUI-приложений.
AD,
7.4.2009, 10:28 Ошибки в исходной документации
Не то что бы ошибка, но на мой взгляд недочет в статье "An Introduction to Model/View Programming".
В главе "Creating New Models" http://www.doc.crossplatform.ru/qt/en/4.5....ing-models.html вначале описывается read-only модель и приведен код:
QVariant StringListModel::data(const QModelIndex &index, int role) const
{
     if (!index.isValid())
         return QVariant();

     if (index.row() >= stringList.size())
         return QVariant();

     if (role == Qt::DisplayRole)
         return stringList.at(index.row());
     else
         return QVariant();
}


Далее когда модель переделывают в редактируюмую описывают создание метода setData и изменение flags , но IMHO еще надо описать переделку метода data на что-то типа:
QVariant StringListModel::data(const QModelIndex &index, int role) const
{
     if (!index.isValid())
         return QVariant();

     if (index.row() >= stringList.size())
         return QVariant();

     if (role == Qt::DisplayRole or role == Qt::EditRole) // <-- Изменения
         return stringList.at(index.row());
     else
         return QVariant();
}

Иначе редактор создается пустым.
Litkevich Yuriy,
3.4.2009, 15:13 Сообщить об ошибке в переводе
Цитата(Litkevich Yuriy @ 3.4.2009, 15:22) *
Перевести надо повозможности ближе к оригиналу, но с учетом твоего замечания.
Исходый близкий к оригиналу:
Цитата
Заметьте, что элементы могут быть брошены (drop) в верхний уровень модели, но перетаскивание разрешено только для действительных элементов.
я думаю здесь союз "но", который присутствует в оригинале, более или мение раставляет всё по своим местам.

IMHO что лучше "быть брошены (drop) на верхний уровень модели"

Цитата(Litkevich Yuriy @ 3.4.2009, 15:22) *
Вот только у меня чешится добавить в скобках:
Цитата
Заметьте, что элементы могут быть брошены (drop) в верхний уровень модели (недействительные модельные индексы), но перетаскивание разрешено только для действительных элементов.


Учитывая, что мы до конца не разобрались, мне кажется лучше не писать.
Litkevich Yuriy,

2 страниц V  < 1 2
RSS Текстовая версия Сейчас: 24.4.2024, 12:29