Làm cách nào để thay đổi chỉ mục trong OptionSelector ngay lập tức (không có hình động)? [đóng cửa]


16

Trong ứng dụng của mình, tôi sử dụng OptionSelector để chọn từ danh sách các trạm xe đạp. Tôi cũng có một thành phần bản đồ với dấu vị trí cho mỗi trạm.

Khi tôi chạm vào dấu vị trí, nó cũng thay đổi OptionSelector thành chỉ mục của trạm tương ứng, vì đây là UX tốt.

Điều không tốt của UX là cách OptionSelector phản ứng với sự thay đổi chỉ số này, nó đang tự hoạt hình như thể nó bị ngón tay của người dùng lướt qua. Nói cách khác, rất lâu sau khi người dùng gõ vào điểm đánh dấu bản đồ và nhận được tất cả thông tin họ cần, OptionSelector vẫn "quay" đến chỉ mục của trạm.

Dưới đây là video minh họa hành vi này: https://www.youtube.com/watch?v=jXKWlAmNYsw

Tôi muốn cho OptionSelector này chỉ cần thay đổi chỉ mục của nó ngay lập tức mà không có hình ảnh động. Có cách nào để làm việc này không?

Đây là cách tôi hiện đang làm. Tôi rất vui khi được sửa chữa nếu đây là cách đi sai về vấn đề này. Tôi sử dụng WorkerScript (một luồng QML, nhiều hơn hoặc ít hơn) để thực hiện các cuộc gọi API. Khi WorkerScript này trả về, nó sẽ di chuyển OptionSelector như vậy:

WorkerScript {
    id: queryStationsWorker
    source: "../js/getstations.js"

    onMessage: {
        [...]

        // Move the OptionSelector to the corresponding station's index.
        stationSelector.selectedIndex = getLastStationIndex(lastStation.contents.stationName, stationsModel)

        /*
         * For the sake of clarity:
         *
         * getLastStationIndex() is a function which just returns an integer.
         * lastStation is a U1DB database used for state saving.
         * stationsModel is a model containing all of the stations.
         */
    }
}

Bất kỳ trợ giúp hoặc cái nhìn sâu sắc đánh giá cao - chúc mừng!


Xin vui lòng cho chúng tôi mã chỉ đủ để tái tạo vấn đề của bạn? Tất nhiên, video này rất hữu ích nhưng thật khó để giúp bạn mà không cần một đoạn mã để sử dụng lại (Xem sscce.org )
Sylvain Pineau

Xin chào Sylvain. Xin lỗi vì sự chậm trễ. Đây là tệp QML bạn có thể sử dụng để kiểm tra. Chỉ cần tạo một dự án UI Simple Ubuntu mới và thay thế tệp QML chính của bạn bằng tệp này: pastebin.ub Ubuntu.com/9534780
Aaron Hastings

Câu trả lời:


0

Bạn có thể thấy một bản sao của OptionSelector qml tại đây, nó sử dụng UbuntuNumberAnimation khi nó không được mở rộng. Không có tùy chọn để tắt nó và nếu tính năng này là bắt buộc, bạn sẽ phải vá ngược dòng và chờ một thời gian cho các phiên bản mới của thư viện.

Bạn có thể tạo tiện ích bộ chọn mở của riêng mình, loại bỏ phần hoạt hình và đảm bảo bạn đổi tên nó để sử dụng trong mã của mình. Tôi đề nghị tuyến đường này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.